有一段驗(yàn)證是否是yyyy/MM日期類型的正則表達(dá)式如下:
1 2 3 4 | var regexp = /^(19|2\d)\d{2}\/(0[1-9]|1[012])$/g;
var val = "2009/12" ;
alert(regexp.test(val));
alert(regexp.test(val));
|
但是兩次alert出來的結(jié)果卻不相同,分別是ture和false。
問題原因
如果模式有全局選項(xiàng),每次test都會(huì)保留上次匹配位置,即lastIndex。
對應(yīng)的解決方案有兩種
1.每次完成匹配之后重置lastIndex屬性。
2.去掉正則表達(dá)式后面的g。 即如下:
1 2 3 4 5 | var regexp = /^(19|2\d)\d{2}\/(0[1-9]|1[012])$/g;
var val = "2009/12" ;
alert(regexp.test(val));
regexp.lastIndex = 0;
alert(regexp.test(val));
|
或
1 2 3 4 | var regexp = /^(19|2\d)\d{2}\/(0[1-9]|1[012])$/;
var val = "2009/12" ;
alert(regexp.test(val));
alert(regexp.test(val));
|
|