为什么这个js正则表达式无法解析0-23之间的数字?
pattern = /([0-1]?[0-9]|2[0-3])/
"12".match(pattern) // => matches 12
"23".match(pattern) // => matches 2 (expected 23)
Run Code Online (Sandbox Code Playgroud)
正则表达式返回第一个匹配项.该[0-1]?[0-9]场比赛2.
要获得您想要的,您需要调整模式的顺序:
var pattern = /2[0-3]|[0-1]?[0-9]/;
Run Code Online (Sandbox Code Playgroud)
var pattern = /2[0-3]|[0-1]?[0-9]/;
document.write("12".match(pattern));
document.write('<br/>');
document.write("23".match(pattern));Run Code Online (Sandbox Code Playgroud)
UPDATE
以上将匹配234返回23.如果你不想与之相匹配的,你可以使用单词边界\b,或者^,$锚作为Gergo Erdosi建议:
var pattern = /\b2[0-3]\b|\b[0-1]?[0-9]\b/;
var pattern = /\b(2[0-3]|[0-1]?[0-9])\b/;
Run Code Online (Sandbox Code Playgroud)