使用替换函数调用String.replace时,我们可以检索匹配的子字符串的偏移量。
var a = [];
"hello world".replace(/l/g, function (m, i) { a.push(i); });
// a = [2, 3, 9]
在上面的示例中,我们获取了匹配的l
字符的偏移列表。
我可以依靠实现来始终按升序的顺序调用匹配函数吗?那就是:我可以确定上面的结果总是[2,3,9]
而不是[3,9,2]
或这些偏移的任何其他排列吗?
我查看了规范,但是找不到任何指定调用顺序的东西,但这可能是正则表达式引擎应该如何实现的暗示?
答案 0 :(得分:3)
我可以依靠实现来始终按升序的顺序调用匹配函数吗?
当然,是的。匹配在源字符串中从左到右处理,因为从左到右是正则表达式引擎以字符串形式工作的方式。
答案 1 :(得分:0)
我认为你不应该担心它。您也可以使用Fookahead
模式,该模式从字符串的开头开始:
"hello world".replace(/(?=l)/g, function (m, i) { a.push(i); });