如何使用JavaScript在HTML中仅替换完整单词?
解决JavaScript仅替换独立单词的问题
我来帮你搞定这个问题~你当前遇到的问题,根源在于正则里的\b(单词边界)规则:\b会把非单词字符(比如-、/)和单词字符的交界判定为单词边界,所以beautiful-things里的things前面的-与t之间、/home/things.html里/与t之间,都会被当成单词边界,导致这些things也被误替换了。
要精准替换独立出现的完整单词,我们可以用正则的正向/反向断言,给things的前后加上严格的上下文限制:
document.body.innerHTML = document.body.innerHTML.replace(/(?<=^|\s|[\.,!?:;])things(?=\s|[\.,!?:;]|$)/g, 'OBJECTS');
拆解这个正则的逻辑:
(?<=^|\s|[\.,!?:;]):反向先行断言,确保things的前面是以下几种情况之一:^:字符串的开头\s:任意空白字符(空格、换行等)[\.,!?:;]:常见的句子标点(逗号、句号、感叹号、问号、冒号、分号)
things:我们要替换的目标单词(?=\s|[\.,!?:;]|$):正向先行断言,确保things的后面是以下几种情况之一:\s:任意空白字符[\.,!?:;]:常见句子标点$:字符串的结尾
测试你的示例语句:
原句:
Hi Guys, I have a lot of things. The things are good. They are beautiful-things. Look at /home/things.html
替换后结果:
Hi Guys, I have a lot of OBJECTS. The OBJECTS are good. They are beautiful-things. Look at /home/things.html
完全符合你的需求——只有独立的things被替换,连字符和路径中的things都保留原样。
内容的提问来源于stack exchange,提问作者Pahalavan
相关产品推荐
相关产品推荐

