我在表单上有一个字段,它采用以下值:-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样式).我不具备在这里使用一个; 我可以切换到案例陈述.但似乎我应该能够在这里使用正则表达式,这似乎是一件合理的事情.当谈到正则表达式时,我仍然很绿;
这显然是你不应该使用RegExp而是数值评估的情况:
var num = parseInt(aNumber, 10); if (num >= 2 && num <= 10) { alert("Match found!"); }
你需要parantheses.我会进一步使用范围来保持可读性:
^([2-9]|10)$
在交替周围使用括号,因为连接的优先级高于交替:
^(2|3|4|5|6|7|8|9|10)$