字符串替换函数调用的顺序

时间:2015-01-12 14:32:09

标签: javascript regex

使用替换函数调用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]或这些偏移的任何其他排列吗?

我查看了规范,但是找不到任何指定调用顺序的东西,但这可能是正则表达式引擎应该如何实现的暗示?

2 个答案:

答案 0 :(得分:3)

  

我可以依靠实现来始终按升序的顺序调用匹配函数吗?

当然,是的。匹配在源字符串中从左到右处理,因为从左到右是正则表达式引擎以字符串形式工作的方式。

答案 1 :(得分:0)

我认为你不应该担心它。您也可以使用Fookahead模式,该模式从字符串的开头开始:

"hello world".replace(/(?=l)/g, function (m, i) { a.push(i); });