我在regexp:match exslt函数中使用XSLT。该函数采用JavaScript Regex模式。因此,我试图匹配一组数字1×3或5×7或9×23。
下面是我提出的regex模式:
(^[1-3]$|^[5-7]$|^[9-23]{1,2}$)
此正则表达式与任何值都不匹配。下面的替代模式在很小程度上是好的:
(^[1-3]$|^[5-7]$|^9$|^[10-23]{2}$)
虽然这与所有其他期望的数字值匹配,但14到19除外。为什么会这样,以及如何使Regex变得更好。顺便说一下,我正在使用http://www.regextester.com/测试模式匹配。
谢谢。
发布于 2011-11-04 17:31:46
您使用的是字符串,而不是数字,因此14、19或20是数字字符串,而不是数字字符串。
所以[10-23]{2}
将匹配0-2,1,3或0,1,2,3次.注意失踪的4-9。
(^[1-3]$|^[5-7]$|^9$|^1[0-9]$|^2[0-3]$)
发布于 2011-11-04 17:33:45
括号包含字符,而不是字符串。试试这个:
^([1-35-79]|1[0-9]|2[0-3])$
编辑:测试它,它工作。
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);
版画
1 2 3 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
发布于 2011-11-04 17:31:34
在regexes中,括号中的内容只表示一个字符。尝试:
^[1-3]$|^[5-7]$|^9$|^1[0-9]$|^2[0-3]$
https://stackoverflow.com/questions/8013412
复制相似问题