当前位置:  开发笔记 > 编程语言 > 正文

正则表达式匹配2-10,但不是99

如何解决《正则表达式匹配2-10,但不是99》经验,为你挑选了3个好方法。

我在表单上有一个字段,它采用以下值:-1,2-10,99

我有一个关注答案2-10的商业规则.

我正在尝试编写一个匹配2-10而不是 99 的正则表达式,我遇到了麻烦.

原始表达:

^2|3|4|5|6|7|8|9|10$

失败,因为99匹配(技术上,两次).线路边界是我从未感到满意的东西.我在expresso中对它们的不同行为比在其他地方(例如.net).在这个特定的例子中,正则表达式是在javascript中运行的.无论如何,expresso似乎忽略了它们(如果我把这些值放在括号中:

^[2|3|4|5|6|7|8|9|10]$

^[2-9]$

如果我指定开头行/字符串结束行/字符串字符(并且是,我试图在第二种情况下分别匹配10),则"全部拼写"或作为范围,expresso永远不会返回任何匹配.

我知道我知道.如果你使用正则表达式解决问题,那么你有两个问题(并且可能他们会开始邀请朋友,事物1和事物2样式).我不具备在这里使用一个; 我可以切换到案例陈述.但似乎我应该能够在这里使用正则表达式,这似乎是一件合理的事情.当谈到正则表达式时,我仍然很绿;



1> Georg Schöll..:

这显然是你不应该使用RegExp而是数值评估的情况:

var num = parseInt(aNumber, 10);
if (num >= 2 && num <= 10) {
    alert("Match found!");
}


parseInt(aNumber,10)//不要忘记基数,否则你会感到惊讶.
仅仅因为问题是关于正则表达式并不意味着正确答案是一个格式正确的正则表达式.http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx

2> soulmerge..:

你需要parantheses.我会进一步使用范围来保持可读性:

^([2-9]|10)$



3> Adam Rosenfi..:

在交替周围使用括号,因为连接的优先级高于交替:

^(2|3|4|5|6|7|8|9|10)$

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有