0

我需要将正则表达式括在引号中,以便可以在其中添加另一个 javascript 变量,但这会阻止它工作。

这是工作示例...

var re = new RegExp(/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/);

而我最终想要实现的将看起来像这样(但经过修改使其有效):

var re = new RegExp('^'+element.defaultValue+'|(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$');

这允许日期格式为 DD/MM/YYYY 或输入字段的默认值。

4

2 回答 2

6

在字符串文字中,您需要转义所有反斜杠。例如'\d'实际上只是字符串'd',因为 Javascript 解析器将反斜杠作为字符串转义序列的开始。构造函数需要字符串中的RegExp()实际反斜杠,因此您必须转义它们:

 `'|(0?[1-9]|[12][0-9]|3[01])[\\/\\-](0?[1-9]|1[012])[\\/\\-]\\d{4}$'`

如果您尝试放入字符串的默认值包含任何特殊字符,您也必须对它们进行转义。要么逃避他们,element.defaultValue要么使用这个问题的答案。

于 2012-08-15T11:04:52.583 回答
0

您不需要转义斜杠,但要转义反斜杠:

new RegExp('^'+element.defaultValue+'|(0?[1-9]|[12][0-9]|3[01])[/\\-](0?[1-9]|1[012])[/\\-]\\d{4}$');

于 2012-08-15T11:07:27.723 回答