2015-07-21 21 views
0

角ng模式匹配任何非字,非空格,非數字不工作?

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js"></script> 
 

 
<div ng-app> 
 
    <form class="edit-segment edit-form" name="form"> 
 
     <input type="text" class="form-control" ng-model="dname" name="name" maxlength="100" ng-pattern="/[A-z0-9 ]+/" ng-required='true' /> 
 
     <output>{{form}}</output> 
 
     <output>{{dname}}</output> 
 
     <output>{{form.name.$valid}}</output> 
 
    </form> 
 
</div>

的模式是:
/[A-Z0-9] +/

出於某種原因,該角度注入的HTML不是作用我期待的方式。 我期望發生的事情是,只要用戶輸入非字,非數字,非空格字符,輸入變爲無效,所以$ form.name。$ valid應該是false。

取而代之的是,只要您輸入的內容包含字母,數字或空格,輸入變爲$ valid就會變爲true。
這樣:?
lkajskdjf < {}
有效

,,...,{} {] [],
無效。。

。,..,{} {] []。,\
有效。

?>?./...// 9k
有效。

kjkljd lkjsdf 90
是有效的。

唯一應該有效的是最後一個... 我對ng-pattern的理解顯然是錯誤的,只要輸入的字符與ng-pattern中的正則表達式匹配。

這是怎麼回事?
爲什麼我期待的行爲不是我所得到的行爲?

回答

2

該模式應該可能是/^[A-z0-9 ]+$/,其中^$分別表示「開始於」和「結束於」。這將意味着正則表達式將完全匹配,只有你的角色類。

+0

?但這並不符合任何內容:http://regexr.com/3bebq –

+0

你很近;答案是/^[A-z0-9] * $/ –

+1

你說得對,我匆忙忘記了一個字。 :)我編輯了我的答案。 –

相關問題