2013-10-17 36 views
19

我想獲得一個角度ng模式來檢查用戶名是否有空格或特殊字符。如果輸入空格或特殊字符,則以下表單將返回false。但是,只要輸入a-z,A-z或0-9,它就會變爲真。我試過ng-pattern =「/ [^ \ s] + /」和\ S和[^],但它們沒有區別。寫一個ng模式來禁止空白和特殊字符

<form name="myform"> 
    valid? {{ myform.$valid }} 
    <input type="text" name="username" ng-model="username" ng-pattern="/[a-zA-Z0-9^ ]/" required/> 
</form> 

這裏是在普拉克形式:http://plnkr.co/edit/6T78kyUgXYfNAwB4RHKQ?p=preview

回答

39

嘗試以下模式:

/^[a-zA-Z0-9]*$/ 

這樣只允許字母數字字符。

+2

就是這樣!謝謝!注意:在角度版本1.1.0之前,模型會被修剪,因此在字符串之前或之後添加一個空格不會返回false。 –

+0

@CraigMorgan不客氣。我完全不使用Angular,但我知道它是一個Javascript庫,我向您提供了一個有效的Javascript正則表達式:) –

+11

只需添加到此即可。 Angular將修剪輸入模型,這意味着驗證不會觸發空格。你可以在輸入中添加一個'ng-trim =「false」'來解決這個問題。 – Cristian

12

爲了表達我正在尋找的具體答案,我已經有了Sniffer /^[a-zA-Z0-9]*$/建議的模式,但角仍然忽略了前導/尾隨空格。由於Cristian mentions中的評論:

角度將修剪輸入模型,這意味着驗證不會觸發空間。您可以將一個ng-trim="false"添加到輸入以解決此問題。

請注意,Angular默認默默修剪空白來保護你。在我的情況下,我希望用戶知道尾部空白是無效的。

+1

您的ng-trim幫助了我很多,因爲在角度內部需要避免空白 –

+0

達成一致!不錯的提示。我會去正則表達式的方法,這是不好的,因爲無論如何需要修剪空白。謝謝! – lostdorje

相關問題