3

我一直在研究一种接受 Twitter 参数(例如 # 和 @)来填充 Twitter 提要的表单。

使用 Angular.js,我计划在保存之前使用内置ng-pattern指令来验证输入,但是验证的行为非常奇怪。它在键入时将输入的每个第二个字符标记为无效的“有效”字符串。

很难解释确切的行为,所以这是一个Plunker

为了完整起见,我将在ng-pattern此处添加奇怪的输入字段:

<input type="text" ng-pattern="/(^|\s)@(\w+)|(^|\s)#(\w+)/g" ng-model="foo" name="foo"/>

4

1 回答 1

6

就是因为全局匹配g选项,取出来就可以了。

调用testexec多次涉及状态

与 exec (或与它结合使用)一样,在同一个全局正则表达式实例上多次调用的 test 将超过上一次匹配。

基本上它正在尝试进行另一场比赛,但找不到:

a = /@(\w+)$/g;
> /@(\w+)$/g
a.exec("@test")
> ["@test", "test"]
a.exec("@test")
> null
于 2013-09-23T14:38:27.927 回答