NG模式只允许字母,数字,点,下划线和破折号

问题描述:

你怎么允许使用输入ng-pattern只:lettersnumbersdotunderscoredash(. _ -)NG模式只允许字母,数字,点,下划线和破折号

已经尝试过下面的人

UPDATE:

$scope.validationPattern = '/^[a-zA-Z\d\-\_]+$/'; 

<input ng-model="model" type="text" ng-pattern="{{validationPattern}}" /> 
+0

而你试过......你使用的是什么模式和代码? –

+0

@WiktorStribiżew:查看更新后的问题。 –

+0

太棒了,什么不行?请注意,图案中没有点(编辑后)。尝试像这样''/^[a-zA-Z0-9 ._-] + $ /''并使用''(add'ng-trim =“false”')。 –

看你的要求,你需要一个点添加到模式:

$scope.regex = '^[a-zA-Z0-9._-]+$'; 

,并添加ng-trim="false"<input>标记以禁止前导/尾随空格。

this plunkr

+0

还有一个问题,如果我想添加斜线('/')为什么'^ [a-zA-Z0-9 ._- /] + $'不起作用? –

+0

好吧,只要遵循以下任一策略:1)跳过连字符,不在乎你在字符类的末尾添加了什么,或者2)始终将连字符保留在字符类的末尾。如果您在字符串文字中转义,请使用双反斜杠。 –

+0

谢谢!在运行中它有效,但不在我的项目中。我得到:'[$ parse:lexerr] Lexer错误:在表达式[^ [a-zA-Z0-9 ._/- ] + $]的列0-0 [^]处出现意外的下一个字符, ?这是输入的样子:'' –

[a-zA-Z0-9][A-Za-z0-9._-]* 

这一个工程

/^[a-zA-Z0-9 ._-]+$/ 

,如果它不适合直接在NG模式进行必要的调整,像这样的正则表达式似乎是适当够你。

在控制器添加

$scope.pattern = /^[a-zA-Z0-9 ._-]+$/;

现在在HTML中使用ng-pattern="pattern"

测试使用这样的:(-_)http://www.regextester.com/

接受数字,字母和三个符号

+0

...并且它也接受空格。 –