2

これは私自身の好奇心の問題です。私は実用的な解決策を持っていますが、なぜ一方の解決策が機能し、もう一方の解決策が機能しないのかについて誰かが洞察を持っているかどうか知りたいです。

ユーザーが有効な数字を入力したことを検証する正規表現が必要でした。いくつかの例:

87

887.65

-87

-87.65

私の最初の試みは次のようになりました:

^(\-?[0-9]+(\.[0-9]*)?)$

「7x」、「1a」、「89p」などの文字列が受け入れられることを除いて、うまく機能しました。私の新しいソリューションは以下のとおりで、問題なく動作するようです。

^(\-?[0-9]+(\.[0-9]+)?)$

2 番目のもの (「+」に注意) はもう少し簡潔ですが、最初のものは文字を受け入れ、2 番目のものは受け入れない理由がわかりません。誰かが私が見逃しているものを見ていますか?

4

1 に答える 1

1

「。」あなたの正規表現では、文字「。」用です。そのため、「\.」でエスケープする必要があります。それ以外の場合は、任意の文字に一致します。2 番目の正規表現では、「+」演算子は少なくとも 1 つの小数を要求するため、「7x」には一致しませんが、「7x1」には一致します。この正規表現のデモを参照してください

于 2016-04-28T13:03:16.903 に答える