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.