当正则表达式禁止空格时,Ng-pattern允许空格



ng-pattern允许以下模式的空格,我不明白为什么它会这样做。

ng-pattern="/^[a-zA-Zd-_]+$/"

我试过没有转义-_,结果是相同的:类ng-validng-valid-pattern应用。

我试图只允许a-z(大写和小写)和破折号和下划线。该模式似乎像我期望的那样在regex101上工作,所以这很令人困惑。

更新:当在空格后输入有效字符时,文本字段被标记为无效,但当空格是第一个字符时不会被标记为无效:(不是像这样硬编码的,"someText"one_answers"some text"被输入到文本输入中):

<input> someText</input> //ng-valid
<input>some text</input> //ng-invalid

还是很困惑为什么会这样

Angular会自动裁剪输入。你可以通过ng-trim="false"来禁用它

<input type="text" ng-model="model" ng-trim="false" ng-pattern="/^[a-zA-Zd-_]+$/"/>

见https://docs.angularjs.org/api/ng/input/input%5Btext%5D

我认为这是因为ng模式会首先修剪您的输入。所以<input> someText</input> //其实和<input>someText</input>是一样的

最新更新