我需要在引号中包含一个正则表达式,以便我可以在其中添加另一个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或输入字段的默认值。
答案 0 :(得分:6)
在字符串文字中,您需要转义所有反斜杠。例如,'\d'
实际上只是字符串'd'
,因为Javascript解析器将反斜杠作为字符串转义序列的开头。 RegExp()
构造函数需要字符串中的实际反斜杠,因此您必须转义它们:
`'|(0?[1-9]|[12][0-9]|3[01])[\\/\\-](0?[1-9]|1[012])[\\/\\-]\\d{4}$'`
如果您尝试放入字符串的默认值包含任何特殊字符,则还必须将它们转义。可以在element.defaultValue
中转义它们,也可以使用this question中的答案。
答案 1 :(得分:0)
你需要不转义斜杠,但做转义反斜杠:
new RegExp('^'+element.defaultValue+'|(0?[1-9]|[12][0-9]|3[01])[/\\-](0?[1-9]|1[012])[/\\-]\\d{4}$');