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);
Run Code Online (Sandbox Code Playgroud)
parsedTs1 显示正确的结果,但运行此脚本后,parsedTs2 变量为 null。
但是当我们删除最后一个“g”字符时,效果很好。
根据文档,选项标志 g 表示全局搜索,与本例无关。
如何多次使用定义的正则表达式字符串来匹配字符串呢?
引用自here:
正则表达式对象维护状态。例如,exec方法不是幂等的,连续调用可能返回不同的结果。对 exec 的调用具有此行为,因为正则表达式对象会记住全局标志设置为 true 时所搜索的最后位置。
如果您想多次调用它,您可以在每次调用后手动重置最后一个索引:
var parsedTs1 = regularExpression.exec(ts);
regularExpression.lastIndex = 0;
var parsedTs2 = regularExpression.exec(ts);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1565 次 |
| 最近记录: |