我建立這應該接受字符串只與下列格式的應用程序:JS正則表達式只允許數字,分號和連字符
- 12345(僅一個數字)
- 12345; 23456(兩個或兩個以上由分隔的數字;)
- 12345-12367(一系列由分隔的數字 - )
的Java腳本的正則表達式應僅允許上述格式&不應接受任何其他格式或符號。任何人都可以想出一個正則表達式嗎?
我建立這應該接受字符串只與下列格式的應用程序:JS正則表達式只允許數字,分號和連字符
的Java腳本的正則表達式應僅允許上述格式&不應接受任何其他格式或符號。任何人都可以想出一個正則表達式嗎?
這是你所需要的正則表達式:/^\d+((;\d+)*|-\d+)?$/
(;\d+)*
將檢查分隔多個號碼「;」
-\d+
將檢查範圍
如果是字符類中的第一個或最後一個字符,我猜不需要跳過連字符。 – 2012-07-31 14:06:32
做了一個編輯,我逃過了一切,我不知道:) – micnic 2012-07-31 14:09:41
同樣在這裏'=]'只是評論,因爲一些人更喜歡代碼「更清潔」(少不必要的轉義)。 – 2012-07-31 14:10:44
嘗試
^[0-9]+([;-][0-9]+)?$
這應該工作
[0-9]+
匹配1個或多個數字 [; - ]匹配;
或-
(...)?
是一個可選匹配
^
錨開始和$
錨繩
添加錨'^ $'... – 2012-07-31 14:06:31
啊謝謝,我只是這樣做;) – 2012-07-31 14:07:40
假設你正在尋找數部分的結束是每次5個位數,下面應該匹配你想要什麼。
[0-9]{5}((;|-)[0-9]{5}){0,1}
如果需要不同的長度,則可以更新{5}與任一另一固定長度或諸如{3,5}的範圍爲3至5的數字串。如果你希望能夠與speperators上市捕捉到超過兩個號碼,可以用
[0-9]{5}((;|-)[0-9]{5})*
^[0-9 - ] {0,50} $
0- 9只接受數字
- ;只允許 - 和;
{0,50}只允許50個字符
您不能使用正則表達式來保證最後一個是有效範圍。 – 2012-07-31 14:03:15
如果你使用分號作爲字段之間的分隔符,也許你應該'拆分'字符串並檢查每個元素是否與其他兩個條件匹配。 – 2012-07-31 14:03:20
前兩個很簡單:'/ ^(\ d +)(; \ d +)?$ /' – 2012-07-31 14:04:16