+
является метасимволом регулярного выражения, поэтому вы должны избегать его, если хотите соответствовать литералу +
. И поскольку \
является метасимволом строки, вы также должны его избежать.
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 |
+----------+
Я не знаю, почему у вас в шаблоне регулярных выражений \\
, потому что это не соответствует строке примера.
Я не уверен, о чем ваши тройные цифры. Это телефонные коды? Вы планируете перечислить каждый код города?