javascript正则表达式"子字“;代替

javascript regexp "subword" replace

本文关键字:子字 代替 quot 正则表达式 javascript      更新时间:2023-09-26

我有一个类似的短语

"我周围的一切都在改变,奇妙的事情+,tthingxx"

我想修改每个单词末尾包含***thing的单词,或者最多修改"thing"后面的另一个字符,比如"+"、"h"或"x"。。。

类似的东西

string = 'everything is changing around me, wonderful thing+, tthingxx'
regex = new RegExp('thing(''+|[g-z])$','g');
string = string.replace(regex, '<b>thing$1</b>');

我想要什么?每一件的事情都在改变着我,美妙的事情+,tthingxx

我的正则表达式的结果是什么?任何工作。。。如果我删除$all,则包含"thing"的单词以及匹配后的至少另一个字符:

我周围的一切都在改变,美妙的thing+,tthingxx

我试过了所有的东西,但首先我不能很好地理解技术英语,其次我没有找到答案。

我该怎么办???提前感谢


我发现的解决方案是使用这个正则表达式

/thing([+g-z]){0,1}'b/g

或者使用RegExp(我需要它,因为我必须传递一个变量):

myvar = 'thing';
regex = new RegExp(myvar + "([+g-z]){0,1}''b" , "g");

在第二种模式下执行正则表达式时,我缺少转义符。但这还不够:+超出了<b我真的不知道为什么!!!


我想要的解决方案是@Qtax:的解决方案

/thing([+g-z])?(?!'w)/g

感谢社区

要解决使用'b+不匹配的问题,可以使用(?!'w)而不是'b,例如:

thing[+g-z]?(?!'w)

在正则表达式中使用边界

'b'w+thing('+|[g-z])?'b

如果我理解你想要什么,那么:

string = 'everything is changing around me, wonderful thing+, tthingxx';
string = string.replace(/thing('b|[+g-z]$)/g, '<b>thing$1</b>');

结果是:

每<b> 事情<b> 正在改变着我,美妙的<b> 事情<b> +,tthingxx

'b是一个单词边界,所以正则表达式所说的是它在字符串末尾找到单词边界+g-z的任何地方,进行替换。