昨天,我有一个任务要在这个领域实现一个验证,用户可以在其中输入他想要下载的页面范围。
在阅读了一些教程之后,我创建了这样的模式,在我看来应该有效,但它不起作用:
你能给我一个提示吗?错误在哪里,或者应该怎样做才能更好。
<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>你可以在这里测试它:测试
更多的例子:
等等。类似于MS Office或Adobe阅读器
发布于 2010-12-17 06:49:58
您需要转义字符串中的反斜杠,否则JavaScript会删除它们或将它们解释为转义序列:
var patt1 = new RegExp("^(\\s*\\d+\\s*\\-\\s*\\d+\\s*,?|\\s*\\d+\\s*,?)+$");发布于 2010-12-17 06:48:59
您可以试试regex:
^(\d+(-\d+)?)(,\d+(-\d+)?)*$若要在之间允许空白,请执行以下操作:
^(\s*\d+\s*(-\s*\d+\s*)?)(,\s*\d+\s*(-\s*\d+\s*)?)*$Rubular连杆
发布于 2010-12-17 07:01:14
您可以使用正则表达式patt1 (正则表达式literal )来定义没有new RegExp的literal。否则,必须转义正则表达式字符串中的所有'\‘(使用'\')。
var patt1 = /^(\s*\d+\s*\-\s*\d+\s*,?|\s*\d+\s*,?)+$/g;现在,patt1.test("1, 2, 3-5, 6, 8, 10-12")应该评估为true,patt1.test("1, 2, 3-5, 6, 8, 10-12,nocando")应计算为false
https://stackoverflow.com/questions/4468336
复制相似问题