首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与2-10匹配,但不是99

与2-10匹配,但不是99
EN

Stack Overflow用户
提问于 2009-02-09 16:19:09
回答 6查看 3.4K关注 0票数 7

窗体上有一个字段,其值如下:-1,2-10,99

我有一条关于2-10答案的商业规则。

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

原文如下:

代码语言:javascript
运行
复制
^2|3|4|5|6|7|8|9|10$

失败,因为99是匹配的(技术上,两次)。而且,线赏金是我从来都不舒服的东西。我在表现力上和其他地方(例如.net)有不同的行为。在这个特定的例子中,regex正在javascript中运行。不管怎样,表现力似乎忽略了它们(如果我将值放在括号中:

代码语言:javascript
运行
复制
^[2|3|4|5|6|7|8|9|10]$

^[2-9]$

无论是“全部拼出”还是作为一个范围,如果我指定开始行/字符串结束行/字符串字符(是的,在第二种情况下,我试图分别匹配10个字符),表现式永远不会返回任何匹配项。

我知道,我知道。如果你用正则表达式来解决一个问题,那么你就有两个问题(他们可能会开始邀请朋友过来,事情1和事情2风格)。我这里没有可以使用的;我可以切换到case语句。但是看起来我应该可以在这里使用正则表达式,这似乎是一件合理的事情。说到大梁,我还是很绿的;

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-02-09 16:33:39

你需要副选修课。我将进一步使用范围来保持事物的可读性:

代码语言:javascript
运行
复制
^([2-9]|10)$
票数 20
EN

Stack Overflow用户

发布于 2009-02-09 16:28:49

显然,在这种情况下,您不应该使用RegExp,而应该使用数值计算:

代码语言:javascript
运行
复制
var num = parseInt(aNumber, 10);
if (num >= 2 && num <= 10) {
    alert("Match found!");
}
票数 46
EN

Stack Overflow用户

发布于 2009-02-09 16:21:11

在交替前后使用括号,因为级联比交替具有更高的优先级:

代码语言:javascript
运行
复制
^(2|3|4|5|6|7|8|9|10)$
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/528807

复制
相关文章

相似问题

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