区域代码的javascript正则表达式

时间:2013-06-14 21:45:10

标签: javascript regex

我对区域代码的验证存在正则表达式问题。 我的区域代码只能是一个数字,但也可以是由' - '

分隔的数字

例如,我的区域代码可以是以下之一:
6
6-66
77-7

正如你所看到的,我必须至少有一个数字或数字用' - '分隔,如果它们是分开的,那么' - '符号后面应该有一个数字(无关紧要)。所以6-不得被验证为合法的区域代码。我尝试了2个小时来解决这个问题,但我不能,所以请帮助我!谢谢!

4 个答案:

答案 0 :(得分:2)

/\d+(-\d+)?$/

这将匹配66-66, 77-7 , but not 6 -`

答案 1 :(得分:1)

如果你要找的是整个字符串:

/^\d+(?:-\d+)?$/

或类似的东西:

if (parseInt(yourstring.split(/-/)[0])>=eval(yourstring)) alert('true');
else alert('false');

但它更复杂:)效率更低!如果条件为假,您的代码将崩溃!

答案 2 :(得分:0)

var data = ['6', '6-66', '77-7', '6-'];

var len = data.length;

for(var i=0; i<len; ++i) {
  var current = data[i];
  var result = data[i].match(/^(\d+|\d+[-]\d+)$/);
  if(result != null) {
    console.log(current);
  }
}

--output:--
6
6-66
77-7

答案 3 :(得分:0)

如需快速回答,您可以尝试以下方法:

 /^([0-9])|([0-9]\-[0-9][0-9])|([0-9][0-9]\-[0-9])$/

或者你的引擎支持perl风格的角色类:

 /^(\d)|(\d\-\d\d)|(\d\d\-\d)$/

这是它的作用:

    /和/之间的
  1. 作为定义正则表达式的字符串

  2. \ d代表一位数,也可以写为[0-9]

  3. ()定义一个子表达式,因此(\ d)匹配您的第一个一位数,(\ d- \ d \ d)第二个三位数字样式和最后一个(\ d \ d- \ d) )三位区域代码的第三种变体

  4. |如(A)|(B)|(C)那样“OR”,所以通过组合前三个,我们将得到:

    /(\ d)|(\ D- \ d \ d)|(\ d \ D- \ d)/

  5. 最后^表示字符串的开头,$ - 结束字符串。

  6. 也有所谓的BRE模式(你必须在每个括号前添加“\”符号),但我认为情况并非如此。但是,如果您有空闲时间,请考虑任何快速教程,如this one