2014-09-30 222 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')); 
相关问题