我有this代码:
var tlTemp=new Array();
tlTemp.push("00 - 01:??:?? - TL 1");
tlTemp.push("00 - 12:??:?? - TL 2");
for(i=0; i<tlTemp.length; i++) {
var removedTL = tlTemp[i].match(/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/);
if(removedTL!=null) {
alert("ok");
}
else
{
alert("no");
return;
}
}
我不明白为什么第一个字符串打印好,第二个字符串打印(如此相似)没有。为什么呢?
答案 0 :(得分:2)
定义字符串不同部分的正则表达式的适当部分是:
(\?\?|10|0\d)
匹配:
??
10
0x where x is a digit
所以12不匹配。
现在,还有TL 2
而不是TL 1
,但在正则表达式中,这被定义为:
(.*)
匹配所有内容,以免造成问题。
答案 1 :(得分:1)
因为您的正则表达式明确排除了它。
本节:
/^(\d\d) - (\?\?|10|0\d)
将匹配限制为以两位数字开头的字符串,空格,短划线和空格,然后是“??”,“10”或“0”后跟数字。
答案 2 :(得分:1)
正则表达式的这一部分:(\?\?|10|0\d)
应更改为(\?\?|10|\d\d)
。零变为\ d。在第一个字符串中,字符串的该部分为01
,而第二个字符串为12
,与正则表达式不匹配。