Javascript 有没有一种方法可以动态地向正则表达式匹配的每个实例添加代码?
假设我有一个文本块,我想用一个索引编号替换单词“the”的每个实例 例如 “大白鲨是咬合理论之父。” 会变成 “0大白鲨是咬伤的1 fa2r。” 我要找的东西是: myText.match(/the/gi).each(函数(i){ //? });Javascript 有没有一种方法可以动态地向正则表达式匹配的每个实例添加代码?,javascript,regex,match,each,Javascript,Regex,Match,Each,假设我有一个文本块,我想用一个索引编号替换单词“the”的每个实例 例如 “大白鲨是咬合理论之父。” 会变成 “0大白鲨是咬伤的1 fa2r。” 我要找的东西是: myText.match(/the/gi).each(函数(i){ //? }); 欢迎使用jquery解决方案。示例: 函数replaceText(text,splitArg){ //var text=“axa”; var parts=text.split(splitArg); var=”; var部分; 对于(变量i=0;i 0)
欢迎使用jquery解决方案。示例:
函数replaceText(text,splitArg){
//var text=“axa”;
var parts=text.split(splitArg);
var=”;
var部分;
对于(变量i=0;i 0)
替换+=i-1;
替换+=零件;
}
更换退货;
}
函数写入线(文本){
文件。写(“”+文本+“”);
}
writeLine(替换文本(“axa”、“x”));
writeLine(替换文本(“axa”,“x”));
writeLine(替换文本(“axxa”,“x”));
writeLine(replaceText(“axxa”、/x+/)//**使用正则表达式**
writeLine(替换文本(“,”x”);
writeLine(替换文本(“aa”、“x”));
//输出:
//a0a
//a0a1a
//a0a12a
//a0a1a
//
//aa
如果您想玩:我最喜欢的功能之一。请注意,提供的函数传递了一个参数列表,该列表基本上与“exec”函数返回的数组相同。第一个参数是整个匹配,后续参数是捕获的组。(我知道你知道,@patrick dw我刚刚为阅读这些答案的年轻人补充了这个。)@Pointy:非常值得注意。
var i = -1;
myText = myText.replace(/the/gi, function(){ return ++i; });
function replaceText(text, splitArg) {
//var text ="axaxa";
var parts = text.split(splitArg);
var replaced = "";
var part;
for (var i=0;i<parts.length;i++) {
part = parts[i]
if(i > 0)
replaced += i-1;
replaced+=part;
}
return replaced;
}
function writeLine(text) {
document.write("<p>"+text+" </p>");
}
writeLine(replaceText("axa", "x"));
writeLine(replaceText("axaxa", "x"));
writeLine(replaceText("axaxxa", "x"));
writeLine(replaceText("axaxxa", /x+/));//**using a regex!**
writeLine(replaceText("", "x"));
writeLine(replaceText("aa", "x"));
//output:
//a0a
//a0a1a
//a0a12a
//a0a1a
//
//aa