窗体上有一个字段,其值如下:-1,2-10,99
我有一条关于2-10答案的商业规则。
我正在尝试编写一个与2-10匹配的正则表达式,而不是99,而且我遇到了麻烦。
原文如下:
^2|3|4|5|6|7|8|9|10$
失败,因为99是匹配的(技术上,两次)。而且,线赏金是我从来都不舒服的东西。我在表现力上和其他地方(例如.net)有不同的行为。在这个特定的例子中,regex正在javascript中运行。不管怎样,表现力似乎忽略了它们(如果我将值放在括号中:
^[2|3|4|5|6|7|8|9|10]$
^[2-9]$
无论是“全部拼出”还是作为一个范围,如果我指定开始行/字符串结束行/字符串字符(是的,在第二种情况下,我试图分别匹配10个字符),表现式永远不会返回任何匹配项。
我知道,我知道。如果你用正则表达式来解决一个问题,那么你就有两个问题(他们可能会开始邀请朋友过来,事情1和事情2风格)。我这里没有可以使用的;我可以切换到case语句。但是看起来我应该可以在这里使用正则表达式,这似乎是一件合理的事情。说到大梁,我还是很绿的;
发布于 2009-02-09 16:33:39
你需要副选修课。我将进一步使用范围来保持事物的可读性:
^([2-9]|10)$
发布于 2009-02-09 16:28:49
显然,在这种情况下,您不应该使用RegExp,而应该使用数值计算:
var num = parseInt(aNumber, 10);
if (num >= 2 && num <= 10) {
alert("Match found!");
}
发布于 2009-02-09 16:21:11
在交替前后使用括号,因为级联比交替具有更高的优先级:
^(2|3|4|5|6|7|8|9|10)$
https://stackoverflow.com/questions/528807
复制相似问题