首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript Regex图形-挡板

JavaScript Regex图形-挡板
EN

Stack Overflow用户
提问于 2011-11-04 17:27:39
回答 4查看 104关注 0票数 0

我在regexp:match exslt函数中使用XSLT。该函数采用JavaScript Regex模式。因此,我试图匹配一组数字1×3或5×7或9×23。

下面是我提出的regex模式:

代码语言:javascript
运行
复制
(^[1-3]$|^[5-7]$|^[9-23]{1,2}$)

此正则表达式与任何值都不匹配。下面的替代模式在很小程度上是好的:

代码语言:javascript
运行
复制
(^[1-3]$|^[5-7]$|^9$|^[10-23]{2}$)

虽然这与所有其他期望的数字值匹配,但14到19除外。为什么会这样,以及如何使Regex变得更好。顺便说一下,我正在使用http://www.regextester.com/测试模式匹配。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-04 17:31:46

您使用的是字符串,而不是数字,因此14、19或20是数字字符串,而不是数字字符串。

所以[10-23]{2}将匹配0-2,1,3或0,1,2,3次.注意失踪的4-9。

代码语言:javascript
运行
复制
(^[1-3]$|^[5-7]$|^9$|^1[0-9]$|^2[0-3]$)
票数 0
EN

Stack Overflow用户

发布于 2011-11-04 17:33:45

括号包含字符,而不是字符串。试试这个:

代码语言:javascript
运行
复制
^([1-35-79]|1[0-9]|2[0-3])$

编辑:测试它,它工作。

代码语言:javascript
运行
复制
var str="";
for (var i=0; i<30; i++) {
  if (/^([1-35-79]|1[0-9]|2[0-3])$/.test(i+"")) str+=i+' '
}
console.log(str);

版画

代码语言:javascript
运行
复制
1 2 3 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
票数 2
EN

Stack Overflow用户

发布于 2011-11-04 17:31:34

在regexes中,括号中的内容只表示一个字符。尝试:

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

https://stackoverflow.com/questions/8013412

复制
相关文章

相似问题

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