Java正则表达式与两个条件混淆

标签 java regex string pattern-matching matching

如果遇到这种序列,例如 1,2,3...9 除了 0 之外,第一个 if 条件应该为真,并且只允许 1 位数字通过。如果第二个 if 具有序列 12, 22, 33 .. 99(01,02...09 除外),则为 true。它只允许传递两位数字。但由于某种原因,第一个条件允许两位或更多数字,并且不会进入下一个条件。

Pattern num1 = Pattern.compile("([1-9&&[^0]]){1}");
Matcher matchNum1 = num1.matcher(min);

Pattern num2 = Pattern.compile("[1-9[^0]]{2}");
Matcher matchNum2 = num2.matcher(min);


if (matchNum1.find()) {
   System.out.println("contains number and no trailing zeroes " + min );
}
else if (matchNum2.find()) {
    System.out.println("contains 2 numbers " + min);
}
else {
    System.out.println("No match");
}

最佳答案

您的正则表达式不会满足您的需要。请参阅以下正则表达式:

Pattern num1 = Pattern.compile("^[1-9]$");
Pattern num2 = Pattern.compile("^[1-9]\\d$");

- ^断言字符串开头的位置。
-[1-9]匹配 1 到 9 之间的单个字符。
- \d匹配数字 [0-9]。优雅的元字符表示法。
-$断言字符串末尾的位置。

关于Java正则表达式与两个条件混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666654/

相关文章:

java - 从数据库中检索数据并以json格式显示

javascript - 用于检测和更新字符串的正则表达式(用于更新 AssemblyInfo.cs 中的文件版本)

Java字符串问题

C++ 字符串像人一样排序?

c - 将字符串传递给函数并返回结构

java - Spring Boot中的服务限制功能

java - Maven-关系 : find dependent projects

java - 封装广义理论

c# - 在 C# 中返回制表符分隔词的正则表达式

python - 将包含 2 个值的列拆分为 pandas df 中的不同列