在Java forString类中,有一个称为matchs的方法,该方法如何使用正则表达式检查我的字符串是否只有数字。我尝试了以下示例,但它们均使我返回了false。
String regex = "[0-9]";
String data = "23343453";
System.out.println(data.matches(regex));
String regex = "^[0-9]";
String data = "23343453";
System.out.println(data.matches(regex));
尝试
String regex = "[0-9]+";
要么
String regex = "\\d+";
按照Java 正则表达式 ,其 +
含义是“一次或多次”,并且其\d
含义是“数字”。
注意:“双反斜杠”是一个 转义序列, 用于获取单个反斜杠-因此,\\d
在Java字符串中会提供实际结果:\d
参考文献:
Java正则表达式
Java字符转义序列
编辑: 由于其他答案有些混乱,我正在编写一个测试用例,并将详细解释一些其他内容。
首先,如果您对该解决方案(或其他解决方案)的正确性有疑问,请运行以下测试案例:
String regex = "\\d+";
// positive test cases, should all be "true"
System.out.println("1".matches(regex));
System.out.println("12345".matches(regex));
System.out.println("123456789".matches(regex));
// negative test cases, should all be "false"
System.out.println("".matches(regex));
System.out.println("foo".matches(regex));
System.out.println("aa123bb".matches(regex));
不一定要在regex中添加
^
和$
,所以它不匹配“ aa123bb”吗?
否。
在Java中,matches
方法(在问题中指定)匹配完整的字符串,而不是片段。换句话说,没有必要使用^\\d+$
(即使它也是正确的)。请查看最后一个否定测试用例。
请注意,如果您使用在线“正则表达式检查器”,则其行为可能有所不同。要匹配Java中字符串的片段,您可以改用find
方法,在此进行详细说明:
Java
Regex中match()和find()之间的区别
这个正则表达式也不会匹配空字符串
""
吗?*
否 。正则表达式\\d*
将匹配空字符串,但\\d+
不匹配。星号*
表示零或多个,而加号+
表示一个或多个。请参阅第一个否定测试用例。
编译正则表达式模式不是更快吗?
是。
确实,一次编译正则表达式模式比在每次调用regex模式时都要快matches
,因此,如果性能影响很重要,则Pattern
可以像这样编译和使用a :
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern.matcher("1").matches());
System.out.println(pattern.matcher("12345").matches());
System.out.println(pattern.matcher("123456789").matches());
问题内容: 我想检查a是否仅包含数字。我用这个: 但意识到它也允许和。基本上,我要确保只能包含数字,而不能包含其他字符。由于和都是数字,所以不是正确的方法。也许我需要一个正则表达式?有小费吗? 问题答案: 怎么样
问题内容: 这个想法是读取String并确认它不包含任何数字字符。因此,“ smith23”之类的内容将不被接受。 问题答案: 你想要什么?速度还是简单?为了提高速度,请选择基于循环的方法。为简单起见,请使用一种基于内衬RegEx的方法。 速度 简单
问题内容: 如何检查字符串是否仅包含数字? 我给了它一个机会。我想看看实现此目的的最简单方法。 问题答案: 您需要在对象上使用方法: 从文档中: str.isdigit() 如果字符串中的所有字符都是数字并且至少有一个字符,则返回True,否则返回False。数字包括需要特殊处理的十进制字符和数字,例如兼容性上标数字。它涵盖了不能用于以10为底的数字的数字,例如Kharosthi数字。形式上,
在Java for String类中有一个叫做matches的方法,如何使用这个方法使用正则表达式来检查我的字符串是否只有数字。我尝试了下面的例子,但他们都返回我的结果是假的。
问题内容: 我正在编写一个程序,其中用户以以下格式输入字符串: 我需要检查字符串中是否有数字 然后只提取数字。 如果我使用或,则无论输入的内容是什么,程序都无法在字符串中找到数字,但是仅在只有数字的情况下才能使用。 我可以使用什么作为查找和提取的解决方案? 问题答案: 我使用的解决方案如下所示: 我确信这不是一个完美的解决方案,但它满足了我的需求。谢谢大家的帮助。:)
使用。但仍不确定为什么上面的方法不起作用。 不管怎样,多亏了之前有人建议这个答案。:)