我试图从错误的电话号码条目中清除数据集。无法在MySQL中为过滤器制作正则表达式。
结构如下:
第一个数字是2-9
第二和第三位可以是任何数字,除非它们可能不是相同的数字
Forth数字在2-9中
第五和第六位可以是任何数字,除了' 11'
我已经找到了一些相当复杂的注册表达式,这些表达式并不起作用;但我确信有一种简单的方法。
A"有效"数字可能如下:
2028658680个
7137038891
我的过滤器通常会错过以下情况:
6778914351个
7777777777个
6178116678
请注意,这些数字是完全弥补的。
答案 0 :(得分:1)
这是可能的,但它会很长很难看。使用更强大的正则表达式引擎,您可以进行环视甚至是条件语句,但据我所知,MySQL并不支持这些内容。
^[2-9](?:0[1-9]|1[02-9]|2[013-9]|3[0-24-9]|4[0-35-9]|5[0-46-9]|6[0-57-9]|7[0-689]|8[0-79]|9[0-8])[2-9](?:1[02-9]|[02-9]1|[02-9]{2})[0-9]{4}$
https://regex101.com/r/qPuS5W/1
说明:
[2-9]
第一个数字是2到9之间的任何数字。
(?:0[1-9]|1[02-9]|2[013-9]|3[0-24-9]|4[0-35-9]|5[0-46-9]|6[0-57-9]|7[0-689]|8[0-79]|9[0-8])
非捕获组包含10个备选项,每个数字以0到9开头,后跟除该数字之外的任何数字。
(?:1[02-9]|[02-9]1|[02-9]{2})
非捕获组,其中任何一个匹配1后跟一个不是1的数字,一个数字不是1,后跟1,或者两个数字不是1
[0-9]{4}
4个任意数字。