3 回答
TA贡献1796条经验 获得超10个赞
这是正则表达式:
^[^\d]*\d+[^\d]*$
这是零个或多个非数字,然后是数字的子字符串,然后又是零个或多个非数字,直到字符串结尾。这是Java代码(带有转义的斜杠):
class MainClass {
public static void main(String[] args) {
String regex="^[^\\d]*\\d+[^\\d]*$";
System.out.println("1".matches(regex)); // true
System.out.println("XX-1234".matches(regex)); // true
System.out.println("XX-1234-YY".matches(regex)); // true
System.out.println("do-not-match-no-integers".matches(regex)); // false
System.out.println("do-not-match-1234-567".matches(regex)); // false
System.out.println("do-not-match-123-456".matches(regex)); // false
}
}
TA贡献1852条经验 获得超7个赞
Matcher.find()会尝试在字符串中找到匹配项。您应该尝试Matcher.matches()查看模式是否适合所有字符串。
这样,您需要的模式是 \d+
编辑:似乎我误解了这个问题。使用相同模式查找字符串是否只有一个整数的一种方法是:
int matchCounter = 0;
while (Matcher.find() || matchCounter < 2){
matchCounter++;
}
return matchCounter == 1
TA贡献1872条经验 获得超3个赞
您可以使用RegEx ^\D*?(\d+)\D*?$
^\D*?
确保行首与第一组之间没有数字(\d+)
匹配您的数字\D*?$
确保您的第一组和行尾之间没有数字
因此,对于您的Java字符串,应为: ^\\D*?(\\d+)\\D*?$
添加回答
举报