【问题标题】:Preg match that allows double quotation marks允许双引号的预匹配
【发布时间】:2014-10-27 21:39:20
【问题描述】:

致力于从 API 返回结果。

目前使用正确的 preg_match 表达式有 2 个问题

第一个是关键字搜索。我需要允许 a-zA-Z 和双引号,因为它允许精确的短语搜索,即)“销售经理”

这就是我现在所拥有的,这行得通吗?我相信如果一个特殊字符在一个类 [] 中,那么我不需要逃避它?在 sublime 2 中,彩色文本看起来好像我错了。

if (!preg_match("/^[a-zA-Z "]*S/", $query)) {
            //do this
        }

第二个是按位置搜索,我需要允许 a-zA-Z0-9 和逗号。 ie) Syracuse, NY 或邮政编码。

if (!preg_match("/^[a-zA-Z0-9,\,]*S/", $location){
            //do this
        }

【问题讨论】:

  • 当你的 PHP 字符串使用 " 双引号时,你需要在其中转义它。
  • “这行得通吗?”你……试过了吗?

标签: php regex


【解决方案1】:

所以我找到了一个不错的正则表达式测试工具,它绝对可以帮助像我这样的初学者。

http://www.phpliveregex.com

Mario 是正确的,它确实需要被转义。

这对我有用:

搜索

if (!preg_match("/[a-zA-Z \"]*\S[a-zA-Z \"]/", $query)) {
        //do this
    }

位置

if (!preg_match("/[a-zA-Z0-9 ,.]*\S[a-zA-Z0-9 ,.]*\S[a-zA-Z0-9 ,.]/", $location){
        //do this
    }

我添加了一个句点作为另一个字符,以防万一有一个城市以 St. 开头。

感谢@Mario 的解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多