【问题标题】:how to check entered regex pattern and example are correct or not如何检查输入的正则表达式模式和示例是否正确
【发布时间】:2013-07-31 22:54:40
【问题描述】:

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

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

这是my simple attempt

这是工作演示:

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

Fiddle

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

【问题讨论】:

  • 我不明白你的问题
  • @Lonely 我在文本框中输入一个正则表达式模式,例如:- /\d{2}-\d{2}-\d{4}/ 并在第二个文本框中输入日期 01-01-2012 ->有效输入 2012-01-01 -> 无效
  • 明白,即使我们必须检查,它是有效日期还是不是我们没有像 42-34-1234 这样有趣的问题的日期

标签: javascript jquery regex match


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    字符串上的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},它将起作用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      相关资源
      最近更新 更多