这里我需要做的就是在每个特定的字符串之前添加一个变量。
示例:
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?
发布于 2017-04-12 23:04:29
var exampleString = "blabla:test abcde 123test:123";
var formattedString = exampleString.replace(/\w*:\w*/gi, 'el.$&');
console.log(formattedString);
Regex在这里的使用和解释https://regex101.com/r/U2KeXi/3
示例Fiddle在这里https://jsfiddle.net/a8wyLb0g/2/
发布于 2017-04-12 22:58:27
您只需要在开始时使用^
进行匹配。并删除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大小写不敏感。您的regexp匹配范围A-z
中的所有字符,其中包含大量标点符号,它们介于大写字母和小写字母之间。
发布于 2017-04-12 22:55:55
就用这个
exampleString.replace(/(\w*):(\w*)/gi, 'el.$1:$2');
REGEXP解释:
捕获组(\w*)用于捕获任意数量的任何字母,$1和$2指定第一和第二捕获组。
https://stackoverflow.com/questions/43385419
复制