javascript - 用单引号引起来时,正则表达式不起作用

标签 javascript regex

我需要将正则表达式用引号括起来,以便我可以向其中添加另一个 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/

相关文章:

java - Fitnesse Framework 正则表达式可能吗?

javascript - react : Do children always rerender when the parent component rerenders?

javascript - 在 iFrame 中定义 customElements 会抛出 "DOMException: Operation not supported"。为什么?

javascript - Angular - 更改服务中的对象属性值并在另一个 Controller 中使用它

javascript - 从 'one behind' 到 'one before'(之间)

php - 用于替换未包含在标签之间的单词的正则表达式(非 html)

javascript - 如何使用 jQuery Flip 为 div 设置动画

javascript - 链接到 index.html 中的 Css 和 js 文件时出错

javascript - 数组 forEach 跳过奇数索引

sql - 如何从 PostgreSQL 中的文本中删除分隔部分?