我有一个单词,例如“单词”,并且如果在前后需要用其他值替换它,则包含字符“:”;
var string = 'some random text :word: some text after';
我尝试过
string = string.replace(/:\\s*(word)\\s*:/g, value);
但没有成功
答案 0 :(得分:0)
很容易混淆,但是RegExp文字和Regem文字字符串 通常会包含不同的转义字符。因为您使用的是文字,所以您无需转义每个反斜杠,因为RegExp会正确解释它们。
在这种情况下,请勿将反斜杠\
加倍,因为这样可以解决与普通反斜杠\
匹配的问题;您只想使用\s
,它将直接解析为任何空白的转义序列:
var string = 'some random text :word: some text after';
console.log(string.replace(/:\s*(word)\s*:/g, '_REPLACEMENT_'));
如果您要查找 any 一词,而不仅仅是实际的字符串word
,请使用RegExp序列[a-zA-Z]*
而不是(word)
,它将匹配任意数量的字母字符序列:
var string = 'some random text :newWord: some text after';
console.log(string.replace(/:\s*[a-zA-Z]*\s*:/g, '_REPLACEMENT_'));
答案 1 :(得分:0)
不需要捕获组,因为您没有将单词复制到替换中。
转义的反斜杠将与文字反斜杠匹配,但是您的输入中没有该反斜杠。如果要匹配空格,则应该为\s
,而不是\\s
。
如果要在结果中包括:
,只需将它们连接到替换值即可。
var string = 'some random text :word: some text after';
var value = 'replacement';
string = string.replace(/:\s*word\s*:/g, ':' + value + ':');
console.log(string);