为什么这些javascript正则表达式抛出语法错误?

时间:2009-03-08 13:25:00

标签: javascript regex

我试图在处理它之前将文本字符串验证为日期,但是我试过的正则表达式都抛出了语法错误,我看不出原因。据我所知,两者都没有错。这些是字符串:

 var datePattern1 = new RegExp( (0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d );

var datePattern2 = new RegExp( [0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2} );

感谢任何帮助。

3 个答案:

答案 0 :(得分:12)

您错过了表达式的引号:

var datePattern1 = new RegExp( "(0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d" );
var datePattern2 = new RegExp( "[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}" );

答案 1 :(得分:9)

将darin传递给RegExp构造函数,或者使用RegExp语法“/ … /”:

var datePattern1 = /(0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d/;
var datePattern2 = /[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}/;

答案 2 :(得分:3)

Regexp()构造函数需要一个字符串,所以你需要引用你的正则表达式:

var datePattern2 = new RegExp('[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}');

使用双引号时,请注意正则表达式中的反斜杠转义。或者,您可以使用Perl语法:

var datePattern2 = /[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}/;