2015-10-18 68 views
0

對於驗證,我試圖確保輸入值與字符串「ISM」結尾,所以我使用簡單納克表達不工作

ng-pattern="\b\w+(ism\b)" 

這沒有觸發對於當表達式不匹配然而,既不輸入$無效是

ng-pattern="ism$". 

我在控制檯中,這似乎是說,它不喜歡錶達收到錯誤消息(S )鍵入:

Error: [$parse:lexerr] 
http://errors.angularjs.org/1.3.15/$parse/lexerrp0=Unexpected 
%20nextharacter%20&p1=s%200-0%20%5B%5C%5D&p2=%5Cb%5Cw%2B(ism%5Cb)... 
+1

請將足夠的代碼添加到問題以允許複製此問題。 – buzzsaw

回答

1

如果我能理解你需要像這樣ng-pattern="/ism$/"

JSFiddle

<form name="myform"> 
    <input type="text" name="test" ng-model="test" ng-pattern="/ism$/" /> 
    <span ng-show="myform.test.$error.pattern">Not valid pattern!</span> 
</form> 
1

感謝Michelem,僅此而已。爲了澄清他人的答案,我沒有意識到ng-pattern值需要開始和結束正斜槓,這就是問題所在。我最終使用了ng-pattern =「/.* ism $ /」,但「/ \ b \ w +(ism \ b)/」的作用與「/ ism $ /」一樣。

如果將ng樣式值指定爲RegExp對象,例如ng-pattern =「new RegExp('。* ism $')」,則不需要正斜槓。如果將要使用多次,那麼將該RegExp放入$ scope變量中可能會更好。