表具有包含以"-"分隔的ID列表的字段。
示例:559-3319-3537-4345-29923
我需要使用regex检查至少使用4个指定标识符的行
示例:在插入到DB之前,我需要检查值559 - 3319 - 3537 - 29923 - 30762是否满足此条件。
我构建了一个模式,它只在指定的顺序下工作,但是如果ID交换,它就不工作了。
模板:^.*\b(-*(559|3319|3537|29923|30762)-*){4,}\b.*$
最初,我认为一个简单的(559|3319|3537|29923|30762){4,}
就足够了,但在本例中它也不起作用,尽管它看到了所有4个值,但没有量词。
请告诉我怎样正确地写出这样的表达式。
2条答案
按热度按时间ttisahbt1#
为了便于阅读/测试,我将搜索的ID简化为1 - 5的整数。以下模式将匹配5个ID中至少4个ID的字符串:
(Play with this here)
或者MySQL的正则表达式方言:
(Play with MySQL version here)
以下是一些例子:
| 编号|示例|是火柴吗?|说明|
| - ------|- ------|- ------|- ------|
| 1个|一、二、三、四、五|是|所有的身份证|
| 第二章|一、二、三、九、五|是|足够的ID|
| 三个|1 - 1 - 9 - 1|是|ID够多了,但还是有重复的|
| 四个|九八七六|否|没有一个身份证|
| 五个|一、二、三、九、九|否|有一些,但还不够|
如果示例3中所示的重复Id是一个问题,那么regex可能不适合这个问题。
yv5phkfx2#
这背后的原因是每个组不只是5个数字中的一个,它还可以包含一些额外的字符。因此,您的示例中匹配的组是:
这是一种方法(不确定是否有其他方法):