当用单引号括起来时,正则表达式不起作用

Tom*_*Tom 0 javascript regex

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

这是工作示例......

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

而我最终想要实现的将是这样的(但经过修改以便它可以工作):

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

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

Dun*_*can 6

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

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

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