0

みたいな台詞があります

「すべてが私の周りで変化している、素晴らしいもの+、tthingxx」

そして、その単語の末尾に ***thing を含むすべての単語、または「+」、「h」、または「x」などの「thing」の後の最大で別の文字を含むすべての単語を変更したい...

何かのようなもの

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

私の正規表現の結果?何かが機能しています... $ を削除すると、「もの」と少なくとも別の文字を含むすべての単語が一致します。

すべてが私の周りで変化している、素晴らしいこと+tthingx x

私はすべてを試しましたが、第一に、技術的な英語があまりよく理解できず、第二に、答えが見つかりませんでした.

私がしなければならないこと???前もって感謝します


私が見つけた解決策は、この正規表現を使用することでした

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

またはRegExpを使用します(変数を渡す必要があるため、必要です):

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

2 番目のモードで正規表現を実行するときにエスケープ \ がありませんでした。しかし、これでは十分ではありません: + が< 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 に答える