$ tagname $形式の不完全なタグに一致する正規表現

javascript regex
$ tagname $形式の不完全なタグに一致する正規表現

javascripには小さなテンプレートシステムがあり、ユーザーは* $ tagname $ の形式でタグを挿入できます。 すべてのタグをパターンと一致させることができます: / \ $ \ w + \ $ / *。

また、不完全なタグに具体的に一致させたい(* $ で始まり、 $ ではない単語境界で終わる)。 $は単語の境界でもあるため、 / \ $ \ w + \ b / を使用できません(正しいタグにも一致します)。 私はこれを試してみましたが、機能しません: / \ $ \ w + [^ \ $] / *。

この文字列「word * $ tag * any word」の不完全なタグに一致しますが、この「word * $ tag $ * any word」にも一致します。

その正規表現の正しい結末は何ですか?

  1  0


ベストアンサー

\$\w+\b\$?

[^ \ $] _must_は何かに一致する必要がありますが、 \ $? はオプションで一致するため、試行 \ $ \ w + [^ \ $] `は機能しません。 それは、単語の境界がどこにあるかを定義しなかったからです。

その上、文字クラスで $`をエスケープすることは厳密には必要ありません。これは同じことです: `[^ $]

2


不完全なタグを具体的に一致させたい場合は、ネガティブな先読みを使用できます。

\$\w+(?![$\w])

しかし、おそらくトマラックの正規表現を使用して、それが `$`で終わるかどうかを確認するために別のチェックを行う方が効率的です。 または、次のように(オプションの)末尾の `$`をキャプチャします。

\$\w+\b(\$?)

グループ#1に空の文字列が含まれている場合、それは不完全なタグです。

2


それで、もし$が単語の境界として扱われるのなら、なぜ単に `\ $ \ w + \ b`しないのですか? それ以外の場合は、冗長になりますが、 `\ $ \ w + [\ $ \ b]`を使用してください。

0


タイトルとURLをコピーしました