我需要做的就是在每个特定字符串之前添加一个变量。
示例:
var exampleString = "blabla:test abcde 123test:123";
var formattedString = "el.blabla:test abcde el.123test:123";
正如你所看到的,当我有“XXX:XXX”这样的东西时,我需要在它之前添加一个变量。
我让正则表达式找到“XXX:”
var regex = new RegExp(/\w+([aA-zZ]:)/g)
但是当我尝试替换它时,它会替换所有而不是添加变量“el。”
var exampleString = "blabla:test abcde 123test:123";
var formattedString = exampleString.replace(new RegExp(/\w+([aA-zZ]:)/g), 'el.');
// formattedString is now "el.test abcde el.123"
// Instead of "el.blabla:test abcde el.123test:123"
有人可以做这个吗?谢谢:))
来源:Javascript Regex: How to put a variable inside a regular expression?
答案 0 :(得分:3)
var exampleString = "blabla:test abcde 123test:123";
var formattedString = exampleString.replace(/\w*:\w*/gi, 'el.$&');
console.log(formattedString);
正则表达式使用和解释https://regex101.com/r/U2KeXi/3
答案 1 :(得分:1)
您需要使用^
仅在开头时匹配。并删除g
修饰符,因为您只需要替换一次,而不是每次都替换。
也没有理由使用new RegExp()
,只需使用RegExp
字面值。
在替换字符串中,您需要使用$&
将原始字符串复制到替换字符串中。
var exampleString = "blabla:test abcde 123test:123";
var formattedString = exampleString.replace(/^\w+[a-z]:/i, 'el.$&');
console.log(formattedString);

此外,在任何一种情况下匹配所有字母的正确方法是[A-Za-z]
,而不是[aA-zZ]
,或使用i
修饰符使regexp不区分大小写。你的正则表达式匹配范围A-z
中的所有字符,其中包括大量字母和ASCII码中的小写字母之间的标点字符。
答案 2 :(得分:0)
请使用此
exampleString.replace(/(\w*):(\w*)/gi, 'el.$1:$2');
REGEXP说明:
捕获组(\ w *)用于捕获任意数量的字母, $ 1和$ 2指定第一个和第二个捕获组。
答案 3 :(得分:0)
您应该使用insertAt
之类的功能代替replace
,请参阅以下示例:
String.prototype.insertAt=function(index, string) {
return this.substr(0, index) + string + this.substr(index);
}
var exampleString = "blabla:test abcde 123test:123";
var regex = new RegExp(/\w+([aA-zZ]:)/g)
var formattedString = exampleString;
while ( (result = regex.exec(exampleString)) ) {
formattedString = formattedString.insertAt(result.index, "el.");
}
console.log(formattedString);

我希望它可以帮助你,再见。