0

に似た性質の文字列があります'foo = "bar"'。現在、これらの文字列が特定の正規表現を通過するかどうかをテストしているとき、「bar」の周りの引用符をでテストして["|']?、その領域の完全な正規表現をの線に沿ったものにします["|']?(\w+)["|']?(読みやすさのために無関係な表現部分を取り除きます)。

これはいくつかのことを意味します:

  • 単語を囲む引用符は、二重引用符、一重引用符、または存在しない場合があります。
  • それらがどれであるかに関係なく、それらは「リンク」されていません。左側に二重引用符が使用され、右側に引用符がない場合でも、これは通過します。

私の目標は、最初の見積もりに基づいて2番目の見積もりを一致させることです。私はこれを完全にRegExで実装したいと思っていますが、(JavaScriptの実装に関する限り)それができることの限界に近づいていることは理解しています。私は先読み/後れをよく知っていますが、私が理解しているように、これらは引用符が触れている場合にのみ関連します。私はそれらを間違って理解することを望んでいます。

PS:私は最近のブラウザについてのみ心配しているので、IE<10のサポートは問題ではありません。

PPS:正規表現でこれを実行したいと述べました。労力を節約し、代替手段を提供しないでください。「これはできません」で十分です。

4

1 に答える 1

2

あなたは書くことができます:

/(["'])\w+\1/

\1最初のcapture-group(["']))がキャプチャしたものと同じ文字列にのみ一致します。

エラーのように思われたため、文字クラス|からパイプ文字を削除したことに注意してください。パイプ文字は、文字クラス内で特別な意味を持ちません。一致できるようにしたい場合にのみ正しいです。 ["']["|']|bar|

于 2012-08-07T13:31:32.377 に答える