0

我的表单中有两个文本框。第一个用于正则表达式模式,第二个用于输入文本。

我正在尝试检查输入正则表达式模式和输入的文本是否匹配。

这是我的简单尝试

这是工作演示:

'01-01-2012'.match( /\d{2}-\d{2}-\d{4}/ )

小提琴

我的查询有什么解决方案吗?

4

2 回答 2

1

使用var pattern = new RegExp($('#pattern').val());. 在这种情况下,您必须输入不带斜线的图案,例如\d{2}-\d{2}-\d{4}(或者您可以检查它们的存在并剪掉它们)。

虽然您可以在代码中创建 regexp var pattern = /\d{2}-\d{2}-\d{4}/,但是当您从输入字段中获取模式并将其分配给变量时,JavaScript 不会将其解析为正则表达式,它只会将字符串分配给变量。正因为如此,你必须显式地创建一个 RegExp 对象并将这个字符串传递给它的构造函数,所以解释器将从它创建正则表达式。

于 2013-07-31T12:27:38.003 回答
0

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}在文本框中输入,它将起作用。

如果您需要系统使用正常的正则表达式,您需要处理字符串并删除/两端的 ,然后转义\.

于 2013-07-31T12:32:00.980 回答