Javascript字符串替换函数匹配组
Javascript string replace function on matched group
我想使用
"string".replace(regex, myFunction('$1'));
其中myFunction将匹配的字符串作为参数,根据它包含的内容做不同的事情并返回不同的字符串。我发现这只是传递'$1'字符串,而不是它所代表的内容。
有什么建议吗?
你真的很接近了,只要稍微改变myFunction
,让它期望两个参数;第二个将是捕获组的内容。然后这样做:
var result = "string".replace(regex, myFunction);
或者如果你不能改变myFunction
,这样做:
var result = "string".replace(regex, function(m, c0) {
return myFunction(c0);
});
注意,在这两种情况下,我们都将函数引用作为第二个参数传递给replace
,我们没有直接调用函数。当您在第二个参数中给replace
一个函数时,它调用它,将完整的正则表达式匹配作为第一个参数传递,然后将任何捕获组匹配作为后续参数传递。
生活例子:
var rex = /test (.*)/;
// Changing myFunction to expect two args:
function myFunction1(m, c0) {
return c0.toUpperCase();
}
console.log("test one".replace(rex, myFunction1));
// Leaving myFunction alone and wrapping the call to it:
function myFunction2(c0) {
return c0.toUpperCase();
}
console.log("test two".replace(rex, function(m, c0) {
return myFunction2(c0);
}));
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- JavaScript按钮/输入/函数,字符串反转
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 从带参数的字符串变量调用函数中的函数
- 是否可以像字符串一样/操作/函数
- 从字符串调用javascript函数
- jquery字符串变量上的每个函数
- 如何在只接受字符串值/文字的HTML属性中调用函数
- 将JSON字符串转换为函数参数
- 在Javascript中将字符串转换为函数
- 正在创建使用子字符串解析JSON数据的函数
- 是否可以在 ng-click 中调用函数字符串
- 用于查找函数字符串 javascript 的正则表达式
- Regex js解析函数字符串
- 是传递给函数(字符串或对象)的元素
- 如何在不使用eval()的情况下将完整的函数字符串转换为javascript函数
- javascript函数字符串slice
- 引用函数(字符串)javascript中的数组项
- JS regex从一个函数字符串中提取多行参数