正则表达式只有数字和破折号

时间:2014-09-30 15:49:46

标签: javascript regex validation

我在JavaScript表单验证中遇到问题。我必须以1-74347064527的格式存储号码  我尝试过这些正则表达式但没有正常工作:

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

为此建议一些正则表达式。 亲切的问候。

3 个答案:

答案 0 :(得分:1)

除非您有其他限制,否则这应该有效:

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

如果您更喜欢[0-9]语法:

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

答案 1 :(得分:0)

在字符类([ ])中,短划线(-)在正则表达式中具有特殊含义 - 它表示"范围",例如。 a-z表示from 'a' to 'z'。你没有逃脱它,所以你的RegExps甚至不正确(至少不是每种语言)。

更新:看来,如果短划线没有被其他字符包围(当它放在字符类的开头或结尾时),这种语法是正确的。抱歉混淆。

请改为尝试:

/^\d\-\d+$/

它匹配以一位数开头的字符串,然后是破折号,然后是一位或多位数。

答案 2 :(得分:0)

var regex = /^\d{1}-?\d{11}$/g
window.alert(regex.test('1-74347064527'));