0

私は StackOverflow を検索しましたが、すべてのキーアップ (jquery キーアップ) で次の形式をチェックする電卓アプリの数値入力の正規表現をチェックする方法についての答えが見つかりません。

  • 次のような任意の整数: 34534
  • ユーザーが34534のように 10 進数を入力しようとしているときに、整数の後にドットが続く場合。ドットは 1 回しか入力できないことに注意してください。
  • 任意のフロート: 34534.093485

千を区切るためにコンマを使用する予定はありません...しかし、そのための正規表現を提供できる人がいれば歓迎します。

1つの正規表現だけで上記の条件を確認することは可能ですか? 前もって感謝します。

4

5 に答える 5

3

孤独.は成功した試合ですか?その場合は、次を使用します。

\d+(\.\d*)?|\.\d*

そうでない場合は、次を使用します。

\d+(\.\d*)?|\.\d+

コンマを正規表現に組み込むのではなく、最初にカンマを取り除くことをお勧めします: str = str.replace(/,/g, ''). 次に、正規表現と照合します。

これでは、数字が 3 つのグループに適切にグループ化されていることを確認できませんが、そのようなチェックにはあまり価値がないと思います。ユーザーが入力1,024した後に数字 ( 1,0246) を追加することを決定した場合、コンマを強制的に移動させるべきではありません。

于 2012-10-11T22:26:30.957 に答える
1

あなたの仕様を書いて、そこから発展させましょう。

  • 任意の整数:\d+
  • コンマ、オプションでその後に整数:\.\d*

2 つを組み合わせて後者をオプションにすると、次のようになります。

\d+\.?\d*

コンマの処理に関しては、非常に醜いものになるので、私はそれに立ち入りたくありません。それでも気にする場合は、入力からすべてのコンマを単純に削除する必要があります。

于 2012-10-11T22:30:12.593 に答える
0

ここで、反対票を投じる可能性のある回答を投入します-これはより良い解決策です:

function valid_float (num) {
    var num = (num + '').replace(/,/g, ''), // don't care about commas, this turns `num` into a String
        float_num = parseFloat(num);
    return float_num == num || float_num + '.' == num; // allow for the decimal point, deliberately using == to ignore type as `num` is a String now
}

あなたの仕事を正しく行う正規表現には、「おそらく」と言っている後に大きなアスタリスクが付いています。

確かに、この答えは、あなたを「かっこいい!」と思わせるような最高にクールなワンライナーを提供するものではありませんが、6 か月後にどこかで問題が発生していることに気付いたり、何かを変更したいと思ったりするときは、どこを調べて修正するかが非常に簡単になります。

于 2012-10-11T22:37:08.590 に答える
0

このよう
[/\d+./] に使用できます。これは、どのクエリにも使用できると思います。12445 か 1244 か 12445.43 か

于 2012-10-11T22:33:46.150 に答える