0

以下は私の正規表現です。

/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/

コンマが二重引用符に含まれていなくても true を返すという事実を除けば、正しく機能しています。コンマの奇妙な動作を示しているのはなぜですか。

たとえば、引用符なしの a:b は false を返し、引用符なしの a,b は true を返します。

専門家の皆さん、助けてください

4

1 に答える 1

3

ここで文字範囲を作成しているため:

/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
                          ^^^^^

これは から までのすべての文字を意味+/、これには も含まれます,

文字クラス内では、通常の正規表現の特殊文字をエスケープする必要はありませんが、特別な意味を持つ別のものがあり-ます.

したがって、正しい文字クラスは次のようになります

/^\\"[a-zA-Z0-9!#$%&\\'*+\-\/=?^_`{\|}~;,:<>()@\[\]]*\\"$/

別の方法-として、を文字クラスの先頭または末尾に配置することもできます。その場合、範囲は作成されず、エスケープは必要ありません。

于 2013-07-24T10:27:46.197 に答える