我试图从错误的电话号码条目中清除一组数据。在MySQL中无法为过滤器生成正则表达式。
结构如下:
第一个数字是2-9。
第二位和第三位数字可以是任何数字,但它们可能不是相同的数字。
四位数是2-9。
第五位和第六位可以是除'11‘以外的任何数字。
我已经找到了一些非常精细的reg表达式,但是我确信这是一种简单的方法。
“有效”数字看起来可能如下:
2028658680
7137038891
我的过滤器通常漏掉以下情况:
6778914351
7777777777
6178116678
请注意,这些数字是完全合成的。
发布于 2017-08-15 22:08:53
这是可能的,但它将是漫长而丑陋的。使用更健壮的regex引擎,您可以进行查找,甚至条件语句,但据我所知,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。
https://stackoverflow.com/questions/45699789
复制相似问题