mysql - 调整 Regex 以与 MySQL 一起工作

标签 mysql regex

我的正则表达式在我的所有测试中都运行良好,但我无法使其在 MySQL 中运行,尽管我一直在谷歌搜索并尝试其变体的示例:

^[A-Za-z]{2,4}-\d{3}-\d{2}$

在 Javascript 中,它正确匹配 AA-001-01ZZZZ-999-99,因此在 MySQL 中尝试了它,并对正则表达式进行了各种调整,所有没有运气:

SELECT * FROM products WHERE sku REGEXP '^[A-Za-z]{2,4}-\d{3}-\d{2}$'

(该表包含数千条记录,其中 sku 与上面给出的示例匹配)

据我所知,Mysql Regex 支持是有限的,但这是否应该不能正常工作,或者是否需要进一步考虑语法才能与 Mysql 一起使用?

最佳答案

要匹配数字,您应该使用 [0-9][[:digit:]]

试试这个:

SELECT col1, col2, ..., coln
FROM products
WHERE sku REGEXP '^[A-Za-z]{2,4}-[0-9]{3}-[0-9]{2}$'

在线查看它:sqlfiddle .

请参阅 REGEXP 的手册.

关于mysql - 调整 Regex 以与 MySQL 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873931/

相关文章:

mysql - Symfony 2 在 mac/mamp 上使用错误的 mysql 安装

javascript - 如果前面没有 's',则替换单词末尾的 's'

javascript - 替换动态大小的捕获组

javascript - 如何在jquery中获取字符串中所有无效字符的值?

php - 使用 AJAX 将 js 变量传递给 PHP

c# - 在datetimepicker已经(保存)写入记录后,如何在sql base中删除,重置或写入 "null"值?

MYSQL一次查询中最常见的列值和AVG

c# - 如何将最后几个数字存储为表行中的变量

javascript - 为什么 CVE-2021-33623 容易受到 ReDoS 攻击?

python - 创建正则表达式以查找标记文本中重复标记的序列