MySQL正则表达式忽略空格

时间:2016-03-29 07:18:40

标签: php mysql regex

在我的数据库中,我有一个号码:00 48 76 848

要匹配的字符串是:004876848

我有:

...
WHERE tel REGEXP '\s($q)'
...

但这不起作用。

我需要达到什么样的正则表达式?

$q = preg_replace("/[\\D]+/", "", $q);
        return DB::select('SELECT contacts_phones.id, CONCAT(firstName, " ", lastName) AS name, tel, "phoneNumber" AS type, entities.name AS company,
            entities.id AS companyId
            FROM contacts_phones, contacts, entities
            WHERE tel REGEXP "[[:space:]]"
            AND contacts_phones.contactId = contacts.id
            AND entities.id = contacts.ownerId
            AND contacts.ownerTypeId = 1
            AND contacts.archived = 0
            LIMIT ' . $limit, array('%' . $q . '%'));

2 个答案:

答案 0 :(得分:1)

你不能告诉正则表达式只是“忽略”空格。你只能匹配它,这与你的价值几乎是不可能的。

在没有正则表达式的情况下,更简单的方法是在根据您的值对其进行测试之前删除空格REPLACE()

 WHERE REPLACE(`tel`, ' ', '') = '004876848'

良好的做法是在将值存储在数据库中之前规范化您的值。这使得其他一切变得更容易。

答案 1 :(得分:0)

WHERE tel REGEXP '[[:space:]]';