ng-pattern允许空格,而正则表达式应该禁止它。

4

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

ng-pattern="/^[a-zA-Z\d\-\_]+$/"

我尝试了不转义 -_,结果是一样的:应用了类 ng-validng-valid-pattern
我正在尝试只允许 a-z(包括大写和小写)、破折号和下划线。在regex101上,模式似乎按照我的预期工作,所以这很令人困惑。
更新: 在空格后键入有效字符后,文本字段被标记为无效,但当空格是第一个字符时则不会: 例如(并非真正硬编码如此,"someText" 和 "some text" 是输入到文本框中的):
<input> someText</input> //ng-valid
<input>some text</input> //ng-invalid

仍然很困惑为什么会这样。

这不是与模式有关的问题:^[a-zA-Z\d\-\_]+$^[a-zA-Z\d_-]*$不允许空格。 - Wiktor Stribiżew
@stribizhev 是的,没错。所以这是我如何使用 ng-pattern 的问题吗?但这似乎非常简单。我看不出我做错了什么。 - 1252748
是的,ng-trim:[*如果设置为false,则Angular不会自动修剪输入。对于input[type=password]控件,此参数将被忽略,该控件永远不会修剪输入。(默认值:true)*](https://docs.angularjs.org/api/ng/input/input%5Btext%5D) - Wiktor Stribiżew
2个回答

12

4
我认为这是因为ng-pattern会先修剪你的输入。所以<input> someText</input>实际上与<input>someText</input>相同。

2
你可以使用 ng-trim="false" 来禁用这种行为。 - Qi Tang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接