Java 字符串中包含1或2位数字的整数

Java 字符串中包含1或2位数字的整数,java,regex,string,int,Java,Regex,String,Int,对不起,我不知道你是否明白我想做什么,我也不确定是否可以100%由正则表达式完成,但也许有一个更好的解决方案,比我心目中的那个更好 我想创建一个函数,它获取一个字符串作为参数,并检查该字符串中是否有整数(这是最简单的部分) 如果有一个整数,但有两个以上的数字或数字被拆分,则函数应返回false 有效期: foo1bar foobar1 f12obar 12foobar 无效的 f1o2obar f1o23obar 所以简单的部分,1或2位数的正则表达式没什么大不了的 [0-9]{1,2}

对不起,我不知道你是否明白我想做什么,我也不确定是否可以100%由正则表达式完成,但也许有一个更好的解决方案,比我心目中的那个更好

我想创建一个函数,它获取一个字符串作为参数,并检查该字符串中是否有整数(这是最简单的部分) 如果有一个整数,但有两个以上的数字或数字被拆分,则函数应返回false

有效期:

  • foo1bar
  • foobar1
  • f12obar
  • 12foobar
无效的

  • f1o2obar
  • f1o23obar
所以简单的部分,1或2位数的正则表达式没什么大不了的

[0-9]{1,2}
另一种方法,我认为是非常糟糕的代码,是在整个字符串中循环并计算每个int。一旦我看到一个,下一个是no int,该字符串中的每一个int都将导致结束

我希望有一个更顺畅的方法来完成这项工作。

:

您会注意到,在链接的演示中,我放置了
^
$
锚点,并使用了
m
多行修饰符……这可能是必要的,也可能不是必要的,这取决于您的实现


从本质上说,我在寻找由0+非数字包围的1-2个数字。

将所有非数字替换为零,然后使用该数字查看原始字符串是否包含它

String str = "foo1b2ar"; //starting string
String num = str.replaceAll("[\\D]",""); //the number it contains
return str.contains(num) && num.length() <= 2; //does the original have that number all together? and is it short?
String str=“foo1b2ar”//起始串
String num=str.replaceAll(“[\\D]”,“”)//它包含的数字
return str.contains(num)和&num.length()“1”->原始值是否包含“1”?对


“f1o23obar”->“123”->原件是否包含“123”?否。

您可以使用以下习惯用法将整个
字符串
仅与1或2位数字匹配:

String[] test = {
    "foo1bar",
    "foobar1",
    "f12obar",
    "12foobar",
    "f1o2obar",
    "f1o23obar"
};
for (String s: test) {
    //                   | matching the whole string
    //                   |       | non-digit, 0 or more times, reluctantly quantified
    //                   |       |     | 1 or 2 digits
    //                   |       |     |       | non digit, 0 or more times, 
    //                   |       |     |       | reluctantly quantified
    System.out.println(s.matches("\\D*?\\d{1,2}\\D*?"));
}
输出

true
true
true
true
false
false

也许我只是偏向于一行程序,但我更喜欢这个解决方案,而不是当前的答案。(另外,根据Java中
String.replaceAll()
String.contains()
(正则表达式与迭代搜索)的实现方式,普通正则表达式(有限自动机)可能会更快。)谢谢@River,不知道为什么有人否决了它。我猜是因为我不“需要”使用正则表达式…但它确实解决了OP的问题problem@MaxZoom你读过我的答案吗?我在多行演示中包括了锚,但取决于OP如何集成这个表达式,这可能是必要的,也可能不是必要的。不,我太懒了。但我现在读了,它可能会起作用。您将如何在Java代码中使用它?
true
true
true
true
false
false