私はオプションの先読みを取得しようとしていますが、オプションで(すぐ後に?
を追加して)すぐに問題が発生しました。オプションの正規表現先読み
簡単な要約として、URIから特定のクエリ文字列のパラメータを取り出そうとしています。例:
/.*foo.html\??(?=.*foo=([^\&]+))(?=.*bar=([^\&]+))/
.exec('foo.html?foo=true&bar=baz')
私は少しそれを破るよ:
.*foo.html\?? // filename == `foo.html` + '?'
(?=.*foo=([^\&]+)) // find "foo=...." parameter, store the value
(?=.*bar=([^\&]+)) // find "bar=...." parameter, store the value
上記の例はfoo
とbar
の両方がクエリ文字列内のパラメータとして存在することを条件に完璧に動作します。問題は、私はこれらをオプションにしようとしているということですので、私はそれを変更:
/.*foo.html\??(?=.*foo=([^\&]+))?(?=.*bar=([^\&]+))?/
↑ ↑
Added these question marks ─┴──────────────────┘
、それはまだfoo.html
と一致するものの、それはもはや、任意のパラメータと一致しません。何か案は?
なぜ正規表現を使用していますか?単に文字列を分割し、キー/値のペアをオブジェクトに格納するだけです。 – ThiefMaster
@ThiefMaster - 私はしたいので:)そして、私はもっと今、それがうまくいかないと思っています。実際には、2つのパラメータを取得するだけでコードが大幅に短くなるためです。 –
なぜ先読みが必要ですか? foo.html?bar = baz&foo = trueも一致させるには? – Bergi