包含字母顺序字母的单词的正则表达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*$