jcu*_*bic 3 javascript regex cross-browser
是否有用于替换使用函数作为参数的库
当我打电话给这个功能
"foo[10]bar[20]baz".replacef(/\[([0-9]*)\]/g, function(a) {
return '[' + (ParseInt(a)*10) + ']';
});
Run Code Online (Sandbox Code Playgroud)
它应该回来
"foo[20]bar[30]baz";
Run Code Online (Sandbox Code Playgroud)
当我打电话给你
"foo[10;5]bar[15;5]baz".replacef(/\[([0-9]*);([0-9]*)\]/g, function(a, b) {
return '_' + (ParseInt(a)+ParseInt(b)) + '_';
});
Run Code Online (Sandbox Code Playgroud)
它应该回来
"foo_15_bar_20_baz"
Run Code Online (Sandbox Code Playgroud)
是否存在在JavaScript中具有此类或类似功能的跨浏览器库?
这就是"replace()"函数已经运行的方式.如果第二个参数是一个函数,它会传递一个参数列表,这些参数与从RegExp"exec()"函数返回的数组几乎相同.该函数返回它想要替换匹配区域的内容.
被调用函数的第一个参数是整个匹配的字符串.第二个和后续参数是正则表达式中捕获的组(如第二个示例).但是,你的第二个例子需要一个带有一个参数的函数来保存整个匹配的字符串.
例:
var s = "hello world".replace(/(\w+)\s*(\w+)/, function(wholeMatch, firstWord, secondWord) {
return "first: " + firstWord + " second: " + secondWord;
});
alert(s); // "first: hello second: world"
Run Code Online (Sandbox Code Playgroud)