我需要匹配一個模式進行驗證。我想匹配一個十進制數,其中數字部分最多可以有 14 位,包括 或 - 不帶 0,小數點后最多 4 位。有效的模式是:
1.23
9857.6543
-745290.0
無效的模式是:
0
0.00
1.23456
我試過 ^[0-9]{0,14}.[0-9]{0,4}$。我不知道如何匹配 、- 和 0 條件
uj5u.com熱心網友回復:
簡短的回答: ^[ -]?[1-9][0-9]{0,13}\.[0-9]{1,4}$
^ - 字串的開始
[ -]?可選,介于 和之間-
[1-9][0-9]{0,13} - 不以 0 開頭的 14 位數字
\. - 小數點分隔符,必須轉義,否則將表示“任何一個字符”
[0-9]{1,4} - 最多 4 位十進制數字
$ - 字串結束
uj5u.com熱心網友回復:
圖案:
^[ -]?[^\D0]\d{0,13}\.\d{1,4}(?!\d)
匹配第一個 3 但不匹配第二個 3。[^\D0]如果我沒記錯的話,與 完全相同[123456789],但稍微緊湊一些。
uj5u.com熱心網友回復:
這個怎么樣?
^(?!0\.?0*$)[\ \-]?[0-9]{1,14}\.?[0-9]{0,4}$
注意:這不匹配沒有前導 0 的小數.123,也不匹配 或 - 之間有空格的數字。不過,這些可以添加到模式中。
在 a 之前需要一個非零數字來.消除整數的小數部分,例如 0.123。
此外,如果您不想要整數而只想要小數,則需要進行修改以使其成為.必需的:
^(?!0\.?0*$)[\ \-]?[0-9]{1,14}\.[0-9]{0,4}$
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354874.html
標籤:javascript 正则表达式
上一篇:元素越界列印輸出為“無”
