热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中检查字符串是否仅包含数字的方法及示例代码

本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。

尝试

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));

问题1:



不一定要在regex中添加^$,所以它不匹配“ aa123bb”吗?


在Java中,matches方法(在问题中指定)匹配完整的字符串,而不是片段。换句话说,没有必要使用^\\d+$(即使它也是正确的)。请查看最后一个否定测试用例。

请注意,如果您使用在线“正则表达式检查器”,则其行为可能有所不同。要匹配Java中字符串的片段,您可以改用find方法,在此进行详细说明:

Java
Regex中match()和find()之间的区别

问题2:



这个正则表达式也不会匹配空字符串""吗?*


。正则表达式\\d*将匹配空字符串,但\\d+不匹配。星号*表示零或多个,而加号+表示一个或多个。请参阅第一个否定测试用例。

问题3



编译正则表达式模式不是更快吗?


确实,一次编译正则表达式模式比在每次调用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());





推荐阅读
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • Ihaveastringwithquotesaroundthepathasfollows:我在路径周围有一个带引号的字符串,如下所示:C:\ProgramFiles(x ... [详细]
  • 本文介绍如何在Java中实现一个罗马数字计算器,重点在于如何通过循环和字符验证确保用户输入合法。我们将探讨创建一个方法来检查字符串中的非法字符,并使用循环不断提示用户输入,直到输入符合要求。 ... [详细]
  • 本文将详细介绍Nose这一非标准库的Python测试框架,它虽然不是Python官方发行版的一部分,但与unittest框架紧密相关,旨在通过简化测试流程来提升开发效率。 ... [详细]
  • 本文详细总结了Java中String类的构造函数及常用方法,包括构造函数的多种形式和方法的具体应用,旨在帮助开发者更好地理解和使用String类。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文介绍了数据持久化的概念,重点讲解了MySQL数据库的基本操作,包括数据的查询、插入、更新及多表连接等,旨在帮助初学者快速掌握MySQL的核心功能。 ... [详细]
  • 本文详细介绍了如何通过微信H5网页授权机制获取用户的code,并进一步获取用户的基本信息,包括必要的配置步骤和前端代码实现。 ... [详细]
  • 本文探讨了一个项目中遇到的挑战,即如何通过技术手段解决不同菜单项触发时,跨域IFrame页面的高度自适应问题。通过创建中介页面和利用JavaScript与Cookie机制,实现无缝的用户体验。 ... [详细]
  • 正则表达式是一种强大的文本处理工具,通过特定的字符序列形成搜索模式,用于在文本中查找或替换符合模式的数据。本文将详细介绍正则表达式的基本概念、元字符、表达式及其实现方式。 ... [详细]
author-avatar
玉临风居士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有