将变量添加到字符串

时间:2017-04-13 06:51:44

标签: javascript regex

我需要做的就是在每个特定字符串之前添加一个变量。

示例:

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?

4 个答案:

答案 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

示例小提琴https://jsfiddle.net/a8wyLb0g/2/

答案 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);




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