如何编写正则表达式验证1-5个字母的非降序及降序排列?
正则表达式验证字母非降序/降序排列(n=1-5)
一、验证非降序排列
通用正则(匹配1-5位符合要求的字符串)
^a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z${1,5}$
指定n的正则(以n=4为例)
^a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z${4}$
原理说明
非降序字符串的核心特征是:所有较小(或相同)的字母都出现在较大字母之前。比如abcd中a在b前、b在c前,bouz中b在o前、o在u前,均符合该规律。
正则中a*表示允许出现0个或多个a,后续依次是b*(0个或多个b)直到z*,最后通过{1,5}(或指定的{n})限定字符串总长度,精准匹配所有符合非降序要求的字符串。
二、验证降序排列
只需反转字母顺序,核心逻辑与非降序一致:
通用正则(匹配1-5位符合要求的字符串)
^z*y*x*w*v*u*t*s*r*q*p*o*n*m*l*k*j*i*h*g*f*e*d*c*b*a${1,5}$
指定n的正则(以n=4为例)
^z*y*x*w*v*u*t*s*r*q*p*o*n*m*l*k*j*i*h*g*f*e*d*c*b*a${4}$
原理说明
降序字符串要求较大(或相同)的字母出现在较小字母之前,比如dcba、zzza均符合该规则。通过将正则中的字母顺序从z到a排列,再限定长度,即可实现降序验证。
内容的提问来源于stack exchange,提问作者user23341383
相关产品推荐
相关产品推荐

