2014-09-30 108 views
0

我在JavaScript表單驗證中遇到了一個問題。我必須存儲在這種格式1-74347064527 號碼我已經嘗試了這些正則表達式,但不能正常工作:只有數字和破折號的正則表達式

var srNo =/^[-0-9]*$/; 
var srNo = /^[0-9]+(-[0-9]+)+$/; 
var srNo=/^([0-9]+-)*[0-9]+$/; 

提出了一些正則表達式這一點。 親切的問候。

+1

'^ [0-9] + - [0-9] + $'或'^ \ d + - \ d + $'是怎麼回事? – hwnd 2014-09-30 15:51:04

+0

@hwnd你的意思是這個var srNo =/^ \ d + - \ d + /;對 ?它不工作! – ABJ 2014-09-30 15:57:02

+1

如果您可以提供更多示例或嘗試,這可能會有所幫助。 – hwnd 2014-09-30 15:57:40

回答

0

當一個字符類([ ]),破折號(-)具有正則表達式中的特殊含義 - 意思是「範圍」,例如。 a-z表示from 'a' to 'z'。你不是逃避它,所以你的RegExps甚至不正確(至少不是每種語言)。

更新:看來,當短劃線沒有被其他字符包圍(當它放置在字符類的開頭或末尾)時,該語法是正確的。抱歉混淆。

試試這個:

/^\d\-\d+$/ 

它匹配以一個數字開頭的字符串,後跟一個破折號,然後通過一個或多個數字。

+0

謝謝。它的工作! – ABJ 2014-09-30 16:12:48

1

這應該工作,除非你有額外的限制:

var srNo = /^\d+-\d+$/; 

如果你喜歡[0-9]語法:

var srNo = /^[0-9]+-[0-9]+$/; 
0
var regex = /^\d{1}-?\d{11}$/g 
window.alert(regex.test('1-74347064527')); 
相關問題