【问题标题】:javascript regex string with no characters before or after [duplicate][重复]之前或之后没有字符的javascript正则表达式字符串
【发布时间】:2018-04-10 15:39:11
【问题描述】:
我想将“我”转换为“你”,而不触及其中包含“我”的单词,即
“厉害瓜我”->“厉害瓜你”
到目前为止,我得到了负面的前瞻性模式:
str.replace(/me(?![a-zA-Z])/g, 'you')
所以我明白了
"awesome melon me" -> "awesoyou melon you"
已尝试some answers,找不到符合此要求的人,在此先感谢您的帮助
【问题讨论】:
标签:
javascript
regex
regex-lookarounds
【解决方案1】:
您可以使用零宽度的\b 特殊符号来确保匹配“me”,因为它是一个完整的单词:
"awesome melon me".replace(/\bme\b/g, "you")
// returns "awesome melon you"
【解决方案2】:
您可以按照其他答案中的建议使用单词边界,同时保留me345 或hello_me。如果需要更严格的匹配模式,可以在模式前捕获匹配的字母,放入替换模式中。
var s = "me awesome melon me"
console.log(s.replace(/(^|[^a-zA-Z])(me)(?![a-zA-Z])/g, '$1you'));
【解决方案3】:
应该这样做:str.replace(\bme\b/g, 'you') - \b 查找单词边界。