我正在尝试在字符串中找到完整的单词,但是我在连字符后出现单词时遇到了麻烦。 如何创建正则表达式以忽略连字符后出现的单词?
var text = "google e-google alphagooglebeta google google";
var word = "google";
var regex = new RegExp("\\b" + word + "\\b", "g");
var result = text.replace(regex, "SUCCESS");
output: "SUCCESS e-SUCCESS alphagooglebeta SUCCESS SUCCESS"
expected output: "SUCCESS e-google alphagooglebeta SUCCESS SUCCESS"
答案 0 :(得分:3)
您可以使用:
var text = "google e-google alphagooglebeta google google";
var word = "google";
var regex = new RegExp("(^|\\s)" + word + "(?=\\s|$)", "g");
var result = text.replace(regex, "$1SUCCESS");
console.log(result);
//=> SUCCESS e-google alphagooglebeta SUCCESS SUCCESS
正则表达式/(^|\s)google(?=\s|$)/
匹配google
如果前面有开头或空格。我们在捕获组中捕获此部分。
(?=\s|$)
是零宽度前瞻断言,断言我们前面有一个空格或行尾。