0

次のjsを正規表現で作成しました。期待どおりに機能しますが、単純化しようとしています。誰か助けてくれませんか?

.12345 - 成功

0.12345 - 成功

12345.12345 - 成功

0.123456失敗 - これは動的であり、5 に制限されていないことを望みます

1.123.45失敗

1..失敗する

..失敗する

abc - 失敗

function clearNonNumericChars(field) {        
    field.val(field.val().replace(/([^0-9\.])/g,""));
    field.val(field.val().replace(/^(\d*\.[0-9]{5})\d+$/g,"$1"));
    field.val(field.val().replace(/(\.\d*)(\.)$/g,"$1"));
} 
4

3 に答える 3

1

数値を文字列として扱わないでください。

isNumberValid = function(n) {
    return (n == Math.round(n*10000)/10000)
}
于 2012-06-07T19:26:41.917 に答える
1

キーアップでこれを行っている場合、正規表現が必要ない場合は必要ありません。イベントハンドラーで keycode/which でフィルタリングするだけです。質問 jQuery にマークを付けたので、次のようになります。

$('input').on('keyup', function (e) {
    if ($.inArray(e.which, [48,49,50,51,52,53,54,55,56,57,190]) === -1) {
        return true;
    }

    return false;
});

私はこれを実際にテストしていないことに注意してください. まだ悪い文字を貼り付けることができることに注意してください。その解決策は読者に任せます...

于 2012-06-07T20:22:48.197 に答える
0

これはあなたが探しているものですか?>>

var str = "1a2..b3.C4;56";
str = str.replace(/[^0-9\.]/g,"").replace(/\./,",").replace(/\./g,"").replace(/,/,"."); 
print(str);

http://ideone.com/F7wWVでのライブテスト

于 2012-06-07T23:03:36.810 に答える