var ts = "00:00:06,705";
var regularExpression = /([0-9]+):([0-9]{2}):([0-9]{2}),([0-9]{3})/g;
var parsedTs1 = regularExpression.exec(ts);
var parsedTs2 = regularExpression.exec(ts);
parsedTs1显示正确的结果,但运行此脚本后,parsedTs2变量为null。
但是当我们最后删除最后一个'g'字符时,效果很好。
根据文件,选项标志g表示全局搜索,这与此案例无关。
我们如何多次使用定义的正则表达式字符串来匹配字符串?
答案 0 :(得分:2)
引自here
:
正则表达式对象维护状态。例如,执行官 方法不是幂等的,连续的调用可能会返回不同的 结果。调用exec有这种行为,因为常规 表达式对象记住它从何时搜索的最后位置 全局标志设置为true。
如果要多次调用它,可以在每次调用后手动重置最后一个索引:
var parsedTs1 = regularExpression.exec(ts);
regularExpression.lastIndex = 0;
var parsedTs2 = regularExpression.exec(ts);