2016-08-24 97 views
3

你怎麼允許使用輸入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」')。 –

回答

9

看你的要求,你需要一個點添加到模式:

$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 [^]處出現意外的下一個字符, ?這是輸入的樣子:'' –

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

,如果它不適合直接在NG模式進行必要的調整,像這樣的正則表達式似乎是適當夠你。

在控制器添加

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

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

測試使用這樣的:(-_)http://www.regextester.com/

接受數字,字母和三個符號

+0

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

相關問題