javascript正则表达式字符串之前或之后没有字符

时间:2017-10-29 15:37:22

标签: javascript regex regex-lookarounds

我希望将“我”转换为“你”,而不会触及其中包含“我”的词,即
“真棒甜瓜我” - > “真棒甜瓜你”

到目前为止,我得到了负向前瞻模式:

str.replace(/me(?![a-zA-Z])/g, 'you')

所以我得到了

“真棒甜瓜我” - > “awesoyou melon you”

已经尝试过some answers,找不到符合此要求的人,提前感谢您的帮助

3 个答案:

答案 0 :(得分:2)

您可以使用零宽度\b特殊符号来确保匹配" me"如果它是一个完整的词:

"awesome melon me".replace(/\bme\b/g, "you")
// returns "awesome melon you"

答案 1 :(得分:0)

您可以按照其他答案中的建议使用字边界,这也会保留me345hello_me。如果需要更严格的匹配模式,可以在模式之前捕获匹配的字母,并将其置于替换模式中。



var s = "me awesome melon me"
console.log(s.replace(/(^|[^a-zA-Z])(me)(?![a-zA-Z])/g, '$1you'));




答案 2 :(得分:0)

这应该这样做:str.replace(\bme\b/g, 'you') - \b寻找单词边界。