输入文本的 ng-pattern
ng-pattern for input text
我有以下输入表单控件:
input.form-control(
ng-model='controller.password'
ng-minlength='1'
ng-maxlength='8'
name='password'
type="{{ controller.passwordShowType }}"
ng-pattern='controller.PASSWORD'
required
)
在控制器中:
PASSWORD = /^[A-Za-z0-9!-@#$%^&*()+<>]{1,8}$/;
对于这个输入,我只想允许这些符号:
'abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890'
但是如果我像上面那样使用我的正则表达式,我可以输入','或'.'符号。
这个工作的正确正则表达式是什么?
您的正则表达式的问题是您在方括号(字符集)内使用了 !-@
。正则表达式认为您要说的是 "match all chars between char !
and char @
"(字符代码 33 - 64),而不是 "use on of [!-@]"。将连字符放在字符集的开头或结尾,或使用反斜杠将其转义。
另见 http://www.regular-expressions.info/charclass.html
In most regex flavors, the only special characters or metacharacters inside a character class are the closing bracket ], the backslash \, the caret ^, and the hyphen -.
基本上,您必须将连字符放在无效的地方或将其转义。
您还可以在 http://regexr.com/ 处输入您的正则表达式以突出显示正则表达式语法 - 它使错误变得相当明显,因为连字符的颜色不同。
我有以下输入表单控件:
input.form-control(
ng-model='controller.password'
ng-minlength='1'
ng-maxlength='8'
name='password'
type="{{ controller.passwordShowType }}"
ng-pattern='controller.PASSWORD'
required
)
在控制器中:
PASSWORD = /^[A-Za-z0-9!-@#$%^&*()+<>]{1,8}$/;
对于这个输入,我只想允许这些符号:
'abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890'
但是如果我像上面那样使用我的正则表达式,我可以输入','或'.'符号。 这个工作的正确正则表达式是什么?
您的正则表达式的问题是您在方括号(字符集)内使用了 !-@
。正则表达式认为您要说的是 "match all chars between char !
and char @
"(字符代码 33 - 64),而不是 "use on of [!-@]"。将连字符放在字符集的开头或结尾,或使用反斜杠将其转义。
另见 http://www.regular-expressions.info/charclass.html
In most regex flavors, the only special characters or metacharacters inside a character class are the closing bracket ], the backslash \, the caret ^, and the hyphen -.
基本上,您必须将连字符放在无效的地方或将其转义。
您还可以在 http://regexr.com/ 处输入您的正则表达式以突出显示正则表达式语法 - 它使错误变得相当明显,因为连字符的颜色不同。