2

XRegExp の「x」フラグを使用する場合、リテラル「#」を検索に追加する方法が不明です。

ドキュメンテーションは、照明を生成するようには見えません。

例えば:

> XRegExp("the # hey",'x').toString()
'/the(?:)/'

これは予想どおりです。「#」以降はすべてコメントであり、無視されます。

その行の内容を無視せず、次の内容を無視しない明らかな解決策は、#通常、(私の限られた経験に基づいて)エスケープ修飾子で始まること\\です。

> XRegExp("the \# hey",'x').toString()
'/the(?:)/'

また

> XRegExp("the \\# hey",'x').toString()
'/the(?:)\\#(?:)hey/'

残念ながら、どちらも期待どおりに機能しません。前者は明らかな理由で、後者は次のようになります。

> XRegExp("the \\# hey",'x').xtest("the # hey")
false

または、入力データを変更しなければならない、より悪質なケースでさえ:

> XRegExp("the \\# hey",'x').xtest("the \\# hey")
false

代替の標準的なエスケープは、ダブル ハッシュ ( ##) を使用することですが、それも機能しません。

> XRegExp("the ## hey",'x').toString()
'/the(?:)/'

#問題は、「x」フラグを使用する XRegExp 式にリテラルを追加するにはどうすればよいかということです。私は困惑しています。

4

2 に答える 2

2

答えが見つかりました。スペースを。に置き換える必要があるため、上記のテストは機能しないことに注意してください\\s+

答えは、[#]例えばを使用することであるようです

> XRegExp("the\\s+[#]\\s+hey",'x').xtest("the # hey")
true
于 2012-10-31T21:59:59.523 に答える