angular ng-pattern 匹配任何非单词、非space、非数字不工作?
angular ng-pattern match any non-word, non-space, non-digit not working?
<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]+/
出于某种原因,这个 angular-infused html 并没有像我期望的那样发挥作用。
我期望发生的是,一旦用户输入非单词、非数字、非 space 字符,输入就会变得无效,因此 $form.name.$valid 应该是假的。
相反的是,只要您输入的内容包含字母、数字或 space,输入就会变为 $valid 变为 true。
所以:
lkajskdjf<.?{}
有效
.,.,..,{}{][].,
无效。
.,.,..,{}{][].,\
有效。
?>?./..,./9k
已验证。
kjkljd lkjsdf 90
有效。
唯一有效的是最后一个...
我对 ng-pattern 的理解显然是错误的,只要输入的字符与 ng-pattern 中的正则表达式匹配,输入才有效。
这是怎么回事?
为什么我期望的行为不是我得到的行为?
模式可能应该是 /^[A-z0-9 ]+$/
,其中 ^
和 $
符号分别表示 "begins with" 和 "ends with"。这意味着正则表达式将完全匹配且仅匹配您的角色 class.
<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]+/
出于某种原因,这个 angular-infused html 并没有像我期望的那样发挥作用。 我期望发生的是,一旦用户输入非单词、非数字、非 space 字符,输入就会变得无效,因此 $form.name.$valid 应该是假的。
相反的是,只要您输入的内容包含字母、数字或 space,输入就会变为 $valid 变为 true。
所以:
lkajskdjf<.?{}
有效
.,.,..,{}{][].,
无效。
.,.,..,{}{][].,\
有效。
?>?./..,./9k
已验证。
kjkljd lkjsdf 90
有效。
唯一有效的是最后一个... 我对 ng-pattern 的理解显然是错误的,只要输入的字符与 ng-pattern 中的正则表达式匹配,输入才有效。
这是怎么回事?
为什么我期望的行为不是我得到的行为?
模式可能应该是 /^[A-z0-9 ]+$/
,其中 ^
和 $
符号分别表示 "begins with" 和 "ends with"。这意味着正则表达式将完全匹配且仅匹配您的角色 class.