我有以下正则表达式
^(?!\d+$)(?!(?:[^$&%@]*[$&%@]){4})(?!.*\b\w{11}).{3,}$
它在 PHP 中运行良好
我希望将其转换为 MySQL 支持的查询。当我在正则表达式之上运行时。我从 reg-exp 收到错误“重复运算符操作数无效”
请帮忙解决这个问题
最佳答案
MySQL 不支持环视,也不支持 \d
或 \w
类。您可以像这样拆分正则表达式:
SELECT * FROM table WHERE col REGEXP '^.{3,}$' AND col NOT REGEXP '^[0-9]+$' AND col NOT REGEXP '([^$&%@]*[$&%@]){4}' AND col NOT REGEXP '[[:<:]][[:alnum:]_]{11}'
地点:
REGEXP '^.{3,}$'
- 总长度应为 3 个或更多字符AND col NOT REGEXP '^[0-9]+$'
- 字符串不能仅包含数字AND col NOT REGEXP '([^$&%@]*[$&%@]){4}'
- 字符串不能有 4 个特殊字符AND col NOT REGEXP '[[:alnum:]_]{11}'
- 字符串不能包含包含 11 个字符的单词
关于php - 将PCRE正则表达式转换为mysql查询正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232862/