0

我有一个短语

“我周围的一切都在改变,美妙的事情+,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

我的正则表达式的结果?任何工作......如果我删除 $ 所有包含“事物”的单词以及匹配后的至少另一个字符:

我周围的一切都在改变,美妙的事情+,t thingx x

我什么都试过了,但是——首先我不能很好地理解技术英语——其次我没有找到答案。

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


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

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

或使用正则表达式(我需要它,因为我必须传递一个变量):

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

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


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

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

感谢社区!

4

3 回答 3

0

在你的正则表达式中使用边界

\b\w+thing(\+|[g-z])?\b
于 2013-06-29T17:35:37.863 回答
0

如果我明白你想要什么,那么:

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在字符串的末尾,进行替换。

于 2013-06-29T17:36:38.787 回答
0

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

thing[+g-z]?(?!\w)
于 2013-06-29T20:04:28.970 回答