正则表达式 - 只有完整的单词而不是特定的字符

时间:2018-06-08 16:57:46

标签: javascript regex

我正在尝试在字符串中找到完整的单词,但是我在连字符后出现单词时遇到了麻烦。 如何创建正则表达式以忽略连字符后出现的单词?

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"

1 个答案:

答案 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|$)是零宽度前瞻断言,断言我们前面有一个空格或行尾。