2015-06-03 26 views
0

我寫了一個JavaScript的小正則表達式。它應該只接受用逗號分隔的數字。逗號分隔數字正則表達式 - 接受管道字符

有效的例子是:

1 single value allowed 
1,278,3780,50 
1,56,90, (trailing comma allowed) 

無效實例是:

1,45 67

1, gj, + (any special character and characters) 

的正則表達式是:/^[\d|\,]+/g

然而,它也接受| (管道字符)。

Like: 1|46|6778|567 

我在做什麼錯了?我錯過了什麼? 請按照這link到我的正則表達式

+0

[Regex for Comma Separated Number](http:// stackoverflow。com/questions/1359147/regex-for-comma-separated-number) – Anonymous

回答

4

你不需要管道(|)和轉義字符類中的字符。另外,作爲一個適當的方式,您可以使用以下正則表達式:

/^(?:\d+\,)+\d+$/g 

Regular expression visualization

Debuggex Demo

正如我錯過了你的編輯,如果後面的逗號是可以簡單地使用一個有效的情況下,下面的正則表達式:

^(\d+,?)+$ 
+0

怎麼樣最後一個逗號 – Tushar

+0

你的正則表達式還允許這個輸入57 ,,,,,, 578678,678,67,678,678 ,,,,, 6,78,6 我的要求只涉及每個分隔一個逗號 –

+0

@ShekharJoshi Yep結帳編輯! – Kasramvd

1

試試這個 -

^\d+\,(?:\d+\,?)+$ 

Demo

編輯:
隨着變更的要求 -

^\d+(?:,\d+)*,?$ 

Demo here

+0

這不符合單個值(帶或不帶尾隨逗號)。 – md4

+0

@ md4好的,我在回答問題後編輯了這個問題。我回答後增加了「單個值不允許」。將補充完整性。感謝:) – Kamehameha

+0

我意識到,我說了同樣的事情@卡斯拉。我確實需要關注未來的問題編輯。 – md4

1

要匹配由逗號分隔的數:

(\d+,?)+ 
+0

Upvoted爲純粹的簡單性。爲了完整起見,它應該被錨定,以避免匹配僅包含分隔數字序列的無效字符串。 – md4

+0

@Kasra,如上所述,根據OP的要求,這是一個*有效的例子。 – md4

1

正確的正則表達式如下:

^\d+(?:,\d+)*,?$ 

這將匹配指定的情況下:

  • 單個號碼(1
  • 由逗號分隔的一系列的數字(1,2,3
  • 可選尾隨逗號(1,1,2,3,4,
相關問題