php - MYSQL 正则表达式 负向先行替代方案

标签 php mysql regex

我正在对邮政编码/邮政编码字段进行查询。
我做了一些研究,但不支持否定前瞻:

"MySQL supports POSIX regular expressions, not PCRE"

是否有替代解决方案,使用 MYSQL 支持的正则表达式?

(?i)^W(?!C) -- 这是 PHP 中的解决方案

以及对数据库的示例查询

select postcode from `postcodes` WHERE LOWER(postcode) REGEXP '^W(?!C)'

最佳答案

在MySQL中,你可以使用

WHERE postcode REGEXP '^W([^C]|$)'

([^C]|$) 匹配除 C 或字符串结尾之外的任何字符。另外,无需使用 TOLOWER,因为正则表达式搜索默认不区分大小写。

请参阅online tests :

SELECT 'wc' REGEXP '^W([^C]|$)'; // => 0
SELECT 'wR' REGEXP '^W([^C]|$)'; // => 1
SELECT 'w' REGEXP '^W([^C]|$)';  // => 1

关于php - MYSQL 正则表达式 负向先行替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44628738/

相关文章:

javascript - 使用js脚本的PHP重定向无法正常工作

javascript - 使用 jquery 加载隐藏的 div - 检测哪个 div

javascript - 不点击提交按钮的下拉选择

mysql - 盘点产品库存

json - 使用正则表达式匹配句点分隔字符串中的最后一个词

java - 正则表达式 (Java) - 需要帮助制定特定的模式字符串

php - 18位时间戳?

java - Hibernate 搜索查询

mysql - 如何在保存到数据库之前调整图像大小?

regex - 如何替换凯特正则表达式