JavaScript正则表达式(页面范围验证)

Fil*_*nov 3 javascript regex

昨天我有一个任务是在用户可以输入他想要下载的页面范围的字段上实现验证.

在阅读了一些教程之后,我创建了这样的模式,在我看来应该可行,但它没有:(

你能否给我一个提示,说明错误在哪里,或者以更好的方式完成.

<script type="text/javascript">
var patt1=new RegExp("^(\s*\d+\s*\-\s*\d+\s*,?|\s*\d+\s*,?)+$");
document.write(patt1.test("1, 2, 3-5, 6, 8, 10-12"));
</script>
Run Code Online (Sandbox Code Playgroud)

PS你可以在这里测试一下:http://www.w3schools.com/js/tryit.asp?filename = tryjs_regexp_test

更多例子:

  • 1场比赛
  • 1-2比赛
  • -2不匹配
  • 1,2,3,4,5匹配
  • 1 2,3不匹配
  • 1-2-2不匹配

等......就像在MS Office或Adobe PDF Reader中一样

cdh*_*wie 7

您需要转义字符串中的反斜杠,否则JavaScript会将它们删除或将它们解释为转义序列:

var patt1 = new RegExp("^(\\s*\\d+\\s*\\-\\s*\\d+\\s*,?|\\s*\\d+\\s*,?)+$");
Run Code Online (Sandbox Code Playgroud)


cod*_*ict 6

你可以试试正则表达式:

^(\d+(-\d+)?)(,\d+(-\d+)?)*$
Run Code Online (Sandbox Code Playgroud)

要允许您之间有空格,可以执行以下操作:

^(\s*\d+\s*(-\s*\d+\s*)?)(,\s*\d+\s*(-\s*\d+\s*)?)*$
Run Code Online (Sandbox Code Playgroud)

橡胶链接