Regex required:它应该只包含[alphabets]或[alphabets and digits],但不包含[didgits],并且不包含java中的运算符或特殊字符 1 年,3 月 Questions & Answers 4666 有效:abcabc11 无效:11{}{}{}{}{}
# 2 楼答案 这个regexp应该完成以下任务:/^[a-zA-Z\d]*[a-zA-Z][a-zA-Z\d]*^/ 请注意,这个正则表达式可能会进行大量的回溯;最坏的情况是O(N^2)。让第一次重复变得懒惰而不是急切会让正则表达式更快。。。如果要匹配的话。加速不匹配情况的方法是使用两个正则表达式 或者更好的是,在简单Java中根本不使用正则表达式和代码匹配: public boolean matchSymbol (String input) { boolean seenLetter = false; final int len = input.length(); for (int i = 0; i < len; i++) { char ch = input.charAt(i); if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') { seenLetter = true; } else if (ch < '0' || ch > '9') { return false; } } return seenLetter; } 对于N个字符串,这会在N循环迭代中成功,或者(通常)在小于N的迭代中失败
# 1 楼答案
你需要两个正则表达式。一个只检查字母数字
/[a-zA-Z0-9]+/
,另一个检查不只是数字/^[^0-9]+$/
如果第一个通过,只检查第二个# 2 楼答案
这个regexp应该完成以下任务:
/^[a-zA-Z\d]*[a-zA-Z][a-zA-Z\d]*^/
请注意,这个正则表达式可能会进行大量的回溯;最坏的情况是
O(N^2)
。让第一次重复变得懒惰而不是急切会让正则表达式更快。。。如果要匹配的话。加速不匹配情况的方法是使用两个正则表达式或者更好的是,在简单Java中根本不使用正则表达式和代码匹配:
对于N个字符串,这会在
N
循环迭代中成功,或者(通常)在小于N
的迭代中失败# 3 楼答案