【发布时间】:2011-03-10 01:27:12
【问题描述】:
我正在尝试在正则表达式中使用范围模式 [01-12] 来匹配两位数 mm,但这并没有按预期工作。
【问题讨论】:
-
您匹配的是字符,而不是字符序列。基本上,您匹配的是 0、1 到 1 和 2(即 0、1 和 2)。考虑一下:
[a-z0-9],它匹配所有小写字母和所有数字,但仅作为单个字符。 -
fwiw 我创建了一个 javascript 工具,它从两个输入(最小/最大)github.com/jonschlinkert/to-regex-range 创建一个高度优化的正则表达式
-
0[1-9]|1[0-2] -> 0|1|2 -> []s 在正则表达式中表示一个字符类。如果没有指定范围,它会隐式地对每个字符进行 ors。
-
需要用纯正则匹配吗?如果没有,您可以:1.) 只需使用
\d+模式,2.) 将匹配的字符串转换为代码中的数字。然后,3.) 检查数字范围,如if(num >= 0 && num <= 12){ /*do something*/ }。它更快更灵活。
标签: regex