8

インライン コメントは、文字列が RegExp コンストラクターに渡されるときに機能します。

RegExp("foo"/*bar*/).test("foo")

しかし、表現ではありません。RegExpオブジェクトのxモードをエミュレートするJavaScriptに同等または代替手段はありますか?

4

2 に答える 2

10

Javascript はx修飾子もインライン コメントもサポートしていません(?#comment)こちらをご覧ください。

あなたができる最善の方法は、RegExpコンストラクターを使用し、すべての行を個別の文字列に書き込んで連結することです (文字列の間にコメントを付けます)。

RegExp(
    "foo" + // match a foo
    "bar" + // followed by a bar
    "$"     // at the end of the string
).test("somefoobar");
于 2012-11-16T20:32:02.273 に答える
2

長さゼロのサブ式を使用する以外は、不可能です。「コメント」の例:

/[a-z](?!<-- Any letter)/

(?!..)否定された先読みです。前の後に括弧内の文字列が続かない場合に一致します。(?!との間)は本当の正規(部分)式なので、バックスラッシュでエスケープしないと任意の文字は使えません

別の方法は、肯定的な先読みを使用することです。

/[a-z](?=|<-- Any letter)/

この先読みは常に一致します。これは、明らかに のa-z後にも空の文字列が続くためです。

于 2012-11-16T20:31:42.870 に答える