Regex:按递增顺序排列的3位数字,数字相同



我想检查序列的最后3位数字是否与前面的3个数字匹配,并且这3个数字中元素的值必须使用Regex增加。

示例:

  • 0143123123匹配为123
  • 0143321321不匹配,因为这3个数字中的元素不能增加

我试着使用这个表达式:

(d)(?!1)(d)(?!1)(?!2)(d)123

但我只得到序列的最后3位与前3位匹配,而不考虑增加

我想你可以使用:

(012|123|234|345|456|567|678|789)1$

请参阅在线演示。

  • (012|123|234|345|456|567|678|789)-匹配这些递增序列中的任何一个
  • 1-与第一个捕获组的相同序列匹配的反向引用
  • $-端串锚

您的对手将是第一个捕获组。

注意:如果您还想说明013|014....245|246等替代方案,您必须将这些替代方案包括在内。这将减少到120种选择。。。不是很漂亮:

(012|013|014|015|016|017|018|019|023|024|025|026|027|028|029|034|035|036|037|038|039|045|046|047|048|049|056|057|058|059|067|068|069|078|079|089|123|124|125|126|127|128|129|134|135|136|137|138|139|145|146|147|148|149|156|157|158|159|167|168|169|178|179|189|234|235|236|237|238|239|245|246|247|248|249|256|257|258|259|267|268|269|278|279|289|345|346|347|348|349|356|357|358|359|367|368|369|378|379|389|456|457|458|459|467|468|469|478|479|489|567|568|569|578|579|589|678|679|689|789)1$

也许你的应用程序有一种更好的方法来后期处理捕获组。

最新更新