我试图在一个字符串中找到完整的单词,但我在单词出现在连字符之后时遇到了问题。 如何创建正则表达式以忽略连字符后出现的单词?
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"
最佳答案
您可以使用:
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|$)
是零宽度先行断言,它断言我们前面有一个空格或行尾。
关于javascript - 正则表达式 - 仅完整的单词而不是特定字符之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50765321/