写一个ng-pattern来禁止空格和特殊字符

Cra*_*gan 21 regex angularjs

我试图获得一个角度ng模式来检查用户名没有空格或特殊字符.如果输入空格或特殊字符,则以下形式返回false.但是,只要输入az,Az或0-9,它就会变为真.我试过ng-pattern ="/ [^\s] + /"和\ S和[^],但它们没有区别.

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

这是插件中的表格:http://plnkr.co/edit/6T78kyUgXYfNAwB4RHKQ?p = preview

Ibr*_*jar 41

尝试以下模式:

/^[a-zA-Z0-9]*$/
Run Code Online (Sandbox Code Playgroud)

这仅允许使用字母数字字符.

  • 只是为了补充这一点.Angular将修剪输入模型,这意味着验证不会触发空格.您可以在输入中添加`ng-trim ="false"`来解决此问题. (12认同)
  • 而已!谢谢!注意:在角度版本1.1.0之前,模型被修剪,因此在字符串之前或之后添加空格将不返回false. (2认同)

Joh*_*ann 14

为了表达我正在寻找的具体答案,我已经有了Sniffer建议的模式/^[a-zA-Z0-9]*$/,但有角度似乎仍然忽略了前导/尾随空格.正如克里斯蒂安在评论中提到的那样:

Angular将修剪输入模型,这意味着验证不会触发空格.您可以添加一个ng-trim="false"输入来修复此问题.

请注意,Angular会尝试通过默认情况下静默修剪空白来保护您.在我的情况下,我希望用户知道尾随空格是无效的.