Javascript Regex对象无法识别{n,m}

spo*_*ots 0 javascript regex

我正在尝试在JS中编写一个正则表达式来识别任何数字,最多七次,然后是" - "后跟2位数后跟" - "后跟一位数字.这是我的简单正则表达式:

/\d{1,7}-\d{2}-\d/g
Run Code Online (Sandbox Code Playgroud)

这应该符合以下字符串:

  • 123-12-7
  • 1-12-7
  • 1234567-12-7

但不是 12345678-12-1

但是,以上情况正在回归.当第一组中有任意数量的数字时,正则表达式返回true.

JavaScript Regex对象不支持{n,m}吗?

这是我正在谈论的一个例子.

var pattern = new RegExp(/\d{1,7}-\d{2}-\d/);
alert(pattern.test("12345678-13-1"));
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/XTRAc/1/实例

Mar*_*der 6

它匹配2345678-13-1.您需要将其锚定到字符串的开头和结尾:

/^\d{1,7}-\d{2}-\d$/
Run Code Online (Sandbox Code Playgroud)

但请注意,(如Rocket Hazmat指出的那样)RegExp如果使用正则表达式文字(没有字符串引号),则不需要使用构造函数.

的jsfiddle