2

ダッシュ('-')ではなく数字以外のすべてを削除するには正規表現が必要です。new RegExp('[^0-9-]')動作するようですがnew RegExp('[\\D-]')、ダッシュも削除してください。なぜこれが違うのですか?

4

5 に答える 5

12

[^0-9-]は「数字ではない、またはダッシュではない
[\D-]もの」は「数字ではない、またはダッシュであるもの」です。

は文字クラス^全体を反転するため、バージョンでは反転がないため、aは正当な一致です。[]\D-

于 2013-02-05T20:40:58.073 に答える
2

2番目のダッシュの前に否定がないためです。(\D実際にはバックスラッシュは1つだけである必要があります)は「すべての数字ではない」を意味し、ダッシュはダッシュを意味します。

于 2013-02-05T20:41:14.513 に答える
2

2番目の正規表現の意味を間違って解釈したためです。

文字クラスの^先頭にある は、そのクラス[^0-9-]で指定されたすべての文字に一致し0-9ます-。一方[\D-]、数字ではなく . であるすべてのものに一致し-ます。

于 2013-02-05T20:42:42.497 に答える
2

^文字クラス ( ) でを使用すると、 []「このクラスには何もない」という意味になります。 \D「数字ではないもの」を意味する特別なシーケンスです。

そう:

[^0-9-]数字または . 以外のものに一致し-ます。

[\D-]は、「任意の非数字文字 (または、-既に数字である ) を意味します。[]ここでは、必要はありません。これは、それ自体と同じ\Dです。

于 2013-02-05T20:49:21.730 に答える
0

\Dの単純な省略形です^0-9

于 2013-02-05T20:41:16.273 に答える