Angular表单验证:如何用Validators.pattern禁止退格和换行符?
解决表单输入排除退格符(\b)和换行符(\n)的正则验证问题
嘿,我来帮你搞定这个表单验证的小问题!你之前用的/(?![\b|\n])/之所以失效,是因为这个正则只做了单次位置检查——它只确认字符串开头的位置后面没有退格或换行符,但不会遍历整个输入内容去排查每一个字符。比如输入"test\nabc"时,开头的t没问题,但后面的换行符完全没被检测到,所以验证就通过了,这显然不是你想要的效果。
正确的正则表达式
要确保整个输入内容里完全不包含退格符(\b)和换行符(\n),你需要用下面这个正则:
/^[^\b\n]*$/
正则拆解说明
^:匹配字符串的起始位置[^\b\n]:这是一个否定字符类,表示匹配任何不是退格符(\b)或换行符(\n)的字符(在字符类里,\b代表的是ASCII退格符,不是单词边界,刚好符合你的需求)*:允许输入零个或多个符合要求的字符(如果要求输入不能为空,可以把*换成+,变成/^[^\b\n]+$/)$:匹配字符串的结束位置
在Angular中的使用示例
把这个正则放到Validators.pattern里就可以正常工作了,比如:
import { FormControl, Validators } from '@angular/forms'; // 定义表单控件时添加验证 const inputControl = new FormControl('', [ Validators.pattern(/^[^\b\n]*$/) ]);
这样无论输入内容里哪个位置出现退格或换行符,都会被这个正则精准拦截,完美满足你的验证需求~
内容的提问来源于stack exchange,提问作者dyh333
相关产品推荐
相关产品推荐

