用单词前后的特殊字符替换单词

时间:2020-09-22 15:21:15

标签: javascript regex

我有一个单词,例如“单词”,并且如果在前后需要用其他值替换它,则包含字符“:”;

var string = 'some random text :word: some text after';

我尝试过

string = string.replace(/:\\s*(word)\\s*:/g, value);

但没有成功

2 个答案:

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