我需要一個JavaScript正則表達式,它只接受正數和小數。這是我所擁有的,但有些錯誤 - 它似乎沒有取得單個正數。正則表達式只接受正數和小數
例如,9
將不起作用。我如何重組這個,所以如果至少有一個正數,它會起作用嗎?
我需要一個JavaScript正則表達式,它只接受正數和小數。這是我所擁有的,但有些錯誤 - 它似乎沒有取得單個正數。正則表達式只接受正數和小數
例如,9
將不起作用。我如何重組這個,所以如果至少有一個正數,它會起作用嗎?
/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/
比賽
0
+0
1.
1.5
.5
但不
.
1..5
1.2.3
-1
編輯:
爲了處理科學記數法(1e6
),你可能想要做
/^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/
如果你想嚴格正數,沒有零,你可以做
/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/
是的這個很不錯..找不到任何問題。 –
@MikeChristensen,它不處理科學記數法,但是你可以在'$'之前使用一個可選的'[eE] [+ - ] [0-9] +'來處理。 –
有幾種不同的方式來做到這一點取決於你的需要:
/^[0-9.]+$/
比賽1
和1.1
但不-1
/^[0-9]+\.[0-9]+$/
比賽1.1
但不1
或-1
一般情況下,我建議使用一個簡單的regExp參考指南,如http://www.regular-expressions.info/用於構建表達式,然後使用java對其進行測試腳本就在您的瀏覽器控制檯:
"123.45".match(/^[0-9.]+$/)
這也包括'...'等等。 – NT3RP
的確如此 - 在編輯之前,問題似乎更廣泛。 –
由於你在每個[0-9]字符類之後有+,沒有小數的數字必須至少爲兩位數字。 –