简单的ng表达不起作用

时间:2015-10-18 16:24:45

标签: javascript regex angularjs

对于Angular应用程序中的验证,我正在尝试确保输入值以字符串“ism”结束,所以我正在使用

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

但是,当表达式不匹配时,这不会触发输入的$ invalid,而且

也不会
ng-pattern="ism$". 

我在控制台中收到一条错误消息,似乎是说它不喜欢输入的表达式:

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)...

2 个答案:

答案 0 :(得分: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 :(得分:1)

谢谢Michelem,就是这样。为了澄清其他人的答案,我没有意识到ng-pattern值需要起始和结束正斜杠,这就是问题所在。我最终使用了ng-pattern =&#34; /.* ism $ /&#34;,但是&#34; / \ b \ w +(ism \ b)/&#34;和#34; / ism $ /&#34;。

一样有效

如果将ng-pattern值指定为RegExp对象,则不需要正斜杠,例如,ng-pattern =&#34; new RegExp(&#39;。* ism $&#39; )&#34 ;.将RegExp放入$ scope变量可能会更好,如果它将被多次使用。