以下は私の正規表現です。
/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
コンマが二重引用符に含まれていなくても true を返すという事実を除けば、正しく機能しています。コンマの奇妙な動作を示しているのはなぜですか。
たとえば、引用符なしの a:b は false を返し、引用符なしの a,b は true を返します。
専門家の皆さん、助けてください
以下は私の正規表現です。
/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
コンマが二重引用符に含まれていなくても true を返すという事実を除けば、正しく機能しています。コンマの奇妙な動作を示しているのはなぜですか。
たとえば、引用符なしの a:b は false を返し、引用符なしの a,b は true を返します。
専門家の皆さん、助けてください
ここで文字範囲を作成しているため:
/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
^^^^^
これは から までのすべての文字を意味+
し/
、これには も含まれます,
。
文字クラス内では、通常の正規表現の特殊文字をエスケープする必要はありませんが、特別な意味を持つ別のものがあり-
ます.
したがって、正しい文字クラスは次のようになります
/^\\"[a-zA-Z0-9!#$%&\\'*+\-\/=?^_`{\|}~;,:<>()@\[\]]*\\"$/
別の方法-
として、を文字クラスの先頭または末尾に配置することもできます。その場合、範囲は作成されず、エスケープは必要ありません。