【问题标题】:Convert JQuery RegEx into PHP RegEX将 JQuery 正则表达式转换为 PHP 正则表达式
【发布时间】:2016-04-02 22:48:32
【问题描述】:

很抱歉这个问题,因为它非常具体。

我有一个JQuery validation RegEx,我也想在后端使用它:

 var forNames = new RegExp("^[^0-9<>'\"/;`%]*$");

我试过PHP

preg_match('/^[^0-9<>\'\"/;`%]{2,42}$/', $first_name) // I also want to keep the length between 2 and 42 here)

但它不起作用,我得到未知修饰符';'在

另一个问题,和这个类似,就是这个人在这里问的问题

Converting Javascript Regex to PHP

我尝试了他的解决方案,将 php email validation regex 复制到 JQuery 没有运气

谢谢

Ps 我只是未编辑我添加到正则表达式中的内容,因为我没有看到它已经有答案并且令人困惑

【问题讨论】:

  • @lleaff 击败了我,但我想提一下我使用regex101.com 来测试我的正则表达式实现。它非常棒,可以让您针对 JS、PHP 和 python 进行测试。它也很聪明,可以为您突出显示您的错误:)
  • 即使您在上面编辑了您的正则表达式,问题仍然存在,缺少对/ 的转义,并且 lleaff 提供的解决方案仍然有效。与其在此处更改正则表达式,不如尝试在 regex101.com 网站中使用您的排列。您可能会发现自己能够解决许多未来的问题 :)
  • RegExp 是一个 javascript 结构,并非特定于 jQuery。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: php jquery regex


【解决方案1】:

您需要在 PHP 正则表达式字符串中转义 / 字符,因为这也是用于表示正则表达式结束的字符(称为 分隔符):

preg_match('/^[^0-9<>\'\"/;`%]{2,42}$/', $first_name) 
                         ^

变成:

preg_match('/^[^0-9<>\'\"\/;`%]{2,42}$/', $first_name) 

您不需要在 JavaScript 代码中执行此操作的原因是您使用了 RegExp 构造函数,它基本上会自动为您转义它。如果您使用了 RegExp 文字,您也必须将其转义:

var forNames = /^[^0-9<>'\"\/;`%]*$/;

正如@DelightedD0D 评论的那样,请务必使用regex101 之类的交互式工具测试您的正则表达式,它同时支持 PHP 和 JS 样式的正则表达式,实际上是我能够如此快速地捕捉到您的错误的方法。

【讨论】:

  • 非常感谢大家,对编辑和取消编辑感到抱歉,我试着把问题恢复到我看到问题已经回答时的样子,结果弄得一团糟。我现在将尝试正则表达式 101。谢谢。
  • @user3808307 在编辑功能中使用rollback 功能。
猜你喜欢
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多