javascript - 正则表达式回调函数只执行一次

标签 javascript regex callback

因此,我正在搜索 {x} 的字符串,其中 x 是 1-9 之间的某个数字,我的正则表达式找到第一个匹配项并运行回调函数,但这仅在第一个找到的实例上调用。例如,{2}Some{3}String 将返回替换值 x 次,具体取决于括号之间的整数,因此该函数返回 Some{3} 当我希望它返回 Some String时。

我不太了解正则表达式,但是我是否需要添加一些内容才能在所有匹配的事件上执行回调函数?

这是代码

var string = "{2}Some{3}String";

function replaceWithTabs(propertyName) {  
  var regExp = new RegExp('\{[1-9]\}');
  function addTabs(match) { 

    var string = '',
        i = 0,
        length = match.substring(1,2);

    for(i; i < length; i++) {
        string += "&#09;";
    }
    return string;  
}  return propertyName.replace(regExp, addTabs);  }

最佳答案

使用这个RegExp文字来代替:

var regExp = /{[1-9]}/g;

{} 不是正则表达式中的特殊符号,因此您可以避免斜杠。 RegExp 的 g 标志意味着全局匹配,否则你只会替换第一个匹配项,而不是所有匹配项。首选使用 literal 而不是 RegExp constructor,因为它更快。此外,如果您使用 RegExp 构造函数,您还需要转义 \ 符号,因为斜杠是字符串文字中的特殊符号。考虑一下:

var regliteral = /\./;
//Similar with constructor
var regconstructor = new RegExp('\\.');  //slash is special symbol in string,so we add extra slash before it

关于javascript - 正则表达式回调函数只执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368331/

相关文章:

javascript - 停止浏览器存储访问历史

javascript - 如何实现youtube显示和隐藏令人难忘的侧边栏?

php - 从文件中获取图像名称的正则表达式

ruby - 将 "a/b/c"转换为 ["a/b/c"、 "a/b"、 "a"的最简单方法]

Javascript,在传递函数参数时保留此引用

javascript - 使变量在没有闭包的情况下可用于异步调用

javascript - SystemJS,Angular2 : switching between min/dev bundle

Java 标记字符串

reactjs - Jest 的回调测试实际上是如何工作的

objective-c - QTCaptureOutput.delegate captureOutput :didOutputVideoFrame:. ..从未调用过