22

我正在尝试获取角度 ng-pattern 来检查用户名是否没有空格或特殊字符。如果您输入空格或特殊字符,以下表单将返回 false。但是,只要您输入 az、Az 或 0-9,它就会变为 true。我试过 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>

这是一个简单的表格:http://plnkr.co/edit/6T78kyUgXYfNAwB4RHKQ? p =preview

4

3 回答 3

42

尝试以下模式:

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

这仅允许字母数字字符。

于 2013-10-17T10:20:26.877 回答
14

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

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

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

于 2015-01-22T21:19:03.490 回答
-2

如果有人需要禁止用户在地址字段中输入电子邮件

ng-pattern="/^[^@]+$/"

<div ng-messages="vm.updateCC.mailingAddress.$error" ng-show="vm.updateCC.mailingAddress.$touched">
     <p class="validation-message" ng-message="pattern">Please enter a valid address</p>
</div>
于 2018-09-10T18:47:40.870 回答