首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript正则表达式(页面范围验证)

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

Stack Overflow用户
提问于 2010-12-17 06:44:19
回答 4查看 3.3K关注 0票数 5

昨天,我有一个任务要在这个领域实现一个验证,用户可以在其中输入他想要下载的页面范围。

在阅读了一些教程之后,我创建了这样的模式,在我看来应该有效,但它不起作用:

你能给我一个提示吗?错误在哪里,或者应该怎样做才能更好。

代码语言:javascript
运行
复制
<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>

你可以在这里测试它:测试

更多的例子:

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

等等。类似于MS Office或Adobe阅读器

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-17 06:49:58

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

代码语言:javascript
运行
复制
var patt1 = new RegExp("^(\\s*\\d+\\s*\\-\\s*\\d+\\s*,?|\\s*\\d+\\s*,?)+$");
票数 9
EN

Stack Overflow用户

发布于 2010-12-17 06:48:59

您可以试试regex:

代码语言:javascript
运行
复制
^(\d+(-\d+)?)(,\d+(-\d+)?)*$

若要在之间允许空白,请执行以下操作:

代码语言:javascript
运行
复制
^(\s*\d+\s*(-\s*\d+\s*)?)(,\s*\d+\s*(-\s*\d+\s*)?)*$

Rubular连杆

票数 7
EN

Stack Overflow用户

发布于 2010-12-17 07:01:14

您可以使用正则表达式patt1 (正则表达式literal )来定义没有new RegExpliteral。否则,必须转义正则表达式字符串中的所有'\‘(使用'\')。

代码语言:javascript
运行
复制
var patt1 = /^(\s*\d+\s*\-\s*\d+\s*,?|\s*\d+\s*,?)+$/g;

现在,patt1.test("1, 2, 3-5, 6, 8, 10-12")应该评估为truepatt1.test("1, 2, 3-5, 6, 8, 10-12,nocando")应计算为false

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4468336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档