regex for mysql查询带有特殊字符的字母数字值

rkue9o1l  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(376)

在mysql中,通过正则表达式搜索这类值的最佳方法是什么?
“de”/+19876543210@-def" ABCDE/ 表示不变的特定值 @-def 也表示不变的特定值
我失败的尝试如下:

SELECT BLAH
FROM BLOOP
WHERE (bloop.field REGEXP'^\\ABCDE/+1(123|234|345|456)[1-9]{7}@abc-def$')
rryofs0p

rryofs0p1#

你没有逃走 + . 它在regex中有一个特殊的含义,意思是一次或多次。
你可以用这个

^ABCDE\/\\+1(123|234|345|456)[1-9]{7}@abc-def$

演示

quhf5bfb

quhf5bfb2#

这个 + 是regexp元字符,因此如果要匹配文本,必须对其进行转义 + . 因为 \ 是一个字符串元字符,你也必须转义它。

mysql> select 'ABCDE/+19876543210@abc-def' regexp 
  '^ABCDE/\\+1(123|234|345|456)[0-9]{7}@abc-def$' as is_match;
+----------+
| is_match |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select 'ABCDE/+12346543210@abc-def' regexp 
  '^ABCDE/\\+1(123|234|345|456)[0-9]{7}@abc-def$' as is_match;
+----------+
| is_match |
+----------+
|        1 |
+----------+

我不知道你为什么 \\ 因为它与示例字符串不匹配。
我不知道你的三位数是什么意思。是电话区号吗?你打算列出每个区号吗?

相关问题