我需要将正则表达式用引号括起来,以便我可以向其中添加另一个 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 格式的日期或输入字段的默认值。
最佳答案
在字符串文字中,您需要转义所有反斜杠。例如,'\d'
实际上只是字符串'd'
,因为Javascript解析器将反斜杠作为字符串转义序列的开头。 RegExp()
构造函数需要字符串中的实际反斜杠,因此您必须对它们进行转义:
`'|(0?[1-9]|[12][0-9]|3[01])[\\/\\-](0?[1-9]|1[012])[\\/\\-]\\d{4}$'`
如果您尝试放入字符串中的默认值包含任何特殊字符,您也必须对它们进行转义。要么在 element.defaultValue
中转义它们,要么使用 this question 中的答案.
关于javascript - 用单引号引起来时,正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968122/