2016-05-30 4 views
3

new RegExp('\bword\b', 'g')のようなコンストラクタ構文を使用して正規表現を作成しようとしていますが、期待どおりに動作しません。むしろ最後の文字がない/\bwor\b/gのような正規表現を作成するようです。なぜこれらの2つの正規表現は同じ動作をしませんか?

jsonファイルから動的に作成するときにコンストラクタ構文を使用して正規表現を作成する必要があり、正規表現をjsonに入れることができません。だから私の質問は次のとおりです:

a。なぜこれらは異なった振る舞いをしていますか?およびb。状況を改善するために私は何ができますか?

注:私がしようとしているのは、単語全体にのみ一致し、別の単語に存在する単語ではない正規表現を作成することです。

+1

RegExpでは2つのバックスラッシュが必要です – YOU

答えて

14

文字列の場合\bのバックスペースを意味します。

正規表現の場合\b単語境界を意味します。

正規表現のバージョンが使用されていることを確認するには、エスケープ文字をエスケープするために、文字列の各バックスラッシュの前に余分なバックスラッシュ\を追加します。

+0

ありがとうございました!私は彼らが異なる構文を持っていることに気づいていません – watzon

+2

@mascalienteはそれらを "異なる構文"として扱わないでください。スラッシュをエスケープする必要があるのは文字列リテラルの要件です。 – zerkms

+0

@zerkmsありがとう:)私は正規表現の領域で学ぶことがたくさんある – watzon

関連する問題