我的表单中有两个文本框。第一个用于正则表达式模式,第二个用于输入文本。
我正在尝试检查输入正则表达式模式和输入的文本是否匹配。
这是我的简单尝试。
这是工作演示:
'01-01-2012'.match( /\d{2}-\d{2}-\d{4}/ )
我的查询有什么解决方案吗?
使用var pattern = new RegExp($('#pattern').val());
. 在这种情况下,您必须输入不带斜线的图案,例如\d{2}-\d{2}-\d{4}
(或者您可以检查它们的存在并剪掉它们)。
虽然您可以在代码中创建 regexp var pattern = /\d{2}-\d{2}-\d{4}/
,但是当您从输入字段中获取模式并将其分配给变量时,JavaScript 不会将其解析为正则表达式,它只会将字符串分配给变量。正因为如此,你必须显式地创建一个 RegExp 对象并将这个字符串传递给它的构造函数,所以解释器将从它创建正则表达式。
on 字符串接受一个正match()
则表达式对象,但是您传递的是一个字符串。这将被转换为正则表达式,不幸的是它会处理一些字符串,请参见此处:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp?redirectlocale=en- US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FRegExp
如果您\\d{2}-\\d{2}-\\d{4}
在文本框中输入,它将起作用。
如果您需要系统使用正常的正则表达式,您需要处理字符串并删除/
两端的 ,然后转义\
.