包含字母顺序字母的单词的正则表达JAVA

我的学生(高中)问了一个关于正则表达式匹配包含字母顺序字母的单词的问题。 说实话,我不知道如何创建正则表达式。 单词匹配示例,字母大小无关紧要:

abc, aWZ, gOR, bor 

 ^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*$ 

应该管用

这应该工作:

 (?i)a*b*c*...z* 

在循环中构造将很容易。

 StringBuilder b = new StringBuilder(64); b.append("(?i)"); for (int i = 'a'; i <= 'z'; i++) b.append((char)i).append('*'); return Pattern.compile(b.toString()).matcher(input).matches(); 

对于正则表达式来说,这不是一个好问题,在for循环中检查它几乎肯定更容易:

 import static java.lang.Character.isLetter; import static java.lang.Character.toLowerCase; public boolean alphabeticalOrder(String word) { for (int i = 0; i < word.length() - 1; i++) { if (!isLetter(word.charAt(i)) || toLowerCase(word.charAt(i + 1)) < toLowerCase(word.charAt(i))) return false; } return isLetter(word.charAt(word.length() - 1)); } 

或者,当传入CASE_INSENSITIVE时,以下正则表达式也将正确匹配(仅适用于ASCII字母字符):

 ^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*$