【问题标题】:Regex doesn't match with parentheses [duplicate]正则表达式与括号不匹配[重复]
【发布时间】:2020-02-17 12:48:10
【问题描述】:

我正在使用 Doctrine MongoDB,我在查询生成器中有以下代码:

$regexSeller = new Regex('^'.$search['seller'], 'i');
$raw->addOr($builder->matchExpr()->field('seller')->equals($regexSeller));

它可以通过像“Bob”这样的搜索找到好的结果,但是当有像“Bob (from Chicago)”这样的括号时就不起作用了。

我猜问题出在第一行,但也找不到与括号匹配的方法。

【问题讨论】:

  • 您可能应该对您在此处插入正则表达式的 data 应用某种屏蔽/转义方法。使用 PHP preg 功能,这将是 php.net/manual/en/function.preg-quote.php 的工作;检查这里使用的任何类是否有它自己的专用方法。

标签: php regex doctrine doctrine-odm


【解决方案1】:

您必须转义查询的特殊字符。例如。将( 替换为\(,将) 替换为\)

在 PHP 中你可以使用preg_quote(https://www.php.net/manual/en/function.preg-quote.php),像这样:

$regexSeller = new Regex('^'.preg_quote($search['seller']), 'i');

让我知道它是否有效! ;)

谢谢!

【讨论】:

  • 确实,它运行良好!设置正则表达式时,我没有想过使用 preg_quote。
猜你喜欢
  • 1970-01-01
  • 2015-06-23
  • 2023-04-02
  • 2019-04-18
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 2021-11-16
  • 2011-08-03
相关资源
最近更新 更多