Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript正则表达式(页面范围验证)_Javascript_Regex - Fatal编程技术网

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

JavaScript正则表达式(页面范围验证),javascript,regex,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 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>

var patt1=new RegExp(“^(\s*\d+\s*\-\s*\d+\s*,?| \s*\d+\s*,?)+$”;
记录(第1部分测试(“1,2,3-5,6,8,10-12”);
请注意,您可以在此处进行测试:

更多示例:

  • 1场比赛
  • 1-2比赛
  • -2不匹配
  • 1,2-3,4,5-7的比赛
  • 1、2、3不匹配
  • 1-2-2不匹配
等…如在MS Office或Adobe PDF Reader中,您可以尝试使用正则表达式:

^(\d+(-\d+)?)(,\d+(-\d+)?)*$
要在两个文件之间允许空白,可以执行以下操作:

^(\s*\d+\s*(-\s*\d+\s*)?)(,\s*\d+\s*(-\s*\d+\s*)?)*$

您需要转义字符串中的反斜杠,否则JavaScript会将其去掉或将其解释为转义序列:

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

^(\\d+(\-\\d+),?)*(\\d+(\-\\d+)++$

您可以使用正则表达式
literal
来定义
patt1
,而不使用
新的RegExp
。否则,您必须转义正则表达式字符串中的所有'\'


现在
patt1.test(“1,2,3-5,6,8,10-12”)
应该计算为
true
patt1.test(“1,2,3-5,6,8,10-12,nocando”)
false

请提供更多示例。见鬼,是的!这就是我缺少的!您的规则:)这个RegExp匹配1-2-2格式。查看下面的@codaddict解决方案。也谢谢你,现在我知道了区别。
var patt1 = /^(\s*\d+\s*\-\s*\d+\s*,?|\s*\d+\s*,?)+$/g;