2013-10-17 34 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

相关问题