Java基础之

您所在的位置:网站首页 java正则表达式匹配字符串中的数字和字符 Java基础之

Java基础之

2023-04-28 20:28| 来源: 网络整理| 查看: 265

前言

在上一篇文章中给大家介绍了String字符串及其各种常用API方法,接下来继续给大家讲解一些String字符串的高级玩法。

有时候我们操作一个字符串时,这个字符串的内容并不一定就是固定不变的。比如在用户注册时,我们要求用户在输入框中输入自己的手机号码。我们知道,每个人的手机号码都是不一样的,那我们该如何保证用户输入的是合法的手机号呢?这就需要我们在代码中对这个手机号进行验证审核,不能随便输入11位数字就行了。这时,就需要对用户传递过来的字符串参数进行校验。

作为一个程序员,你可能会想到通过一段代码程序来进行判断,但这种方法需要创建对应的判断规则,然后用一堆的代码进行实现,比如:

boolean isValidMobileNumber(String s) { // 是否是11位? if (s.length() != 11) { return false; } // 每一位都是0~9: for (int i=0; i '9') { return false; } } return true; } 复制代码

但上面的代码只是做了非常粗略的判断,并未考虑首位数字不能为0等更详细的情况,而且以后随着发展,可能手机号不只有11位,或者会有其他的规则。那时候再修改代码吗?这就很麻烦!

实际上,在开发时,如果我们想实现该功能,比较普遍且靠谱的做法,是利用正则表达式来进行实现。那么什么是正则表达式?它有哪些特点?怎么用?接下来就请大家跟我一起来学习今天的内容吧。

全文大约 【6000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. 正则表达式 1. 简介

有挺多小伙伴之前听说过正则表达式,觉得这是一个很牛逼、很神奇的知识点,所以隐隐地觉得正则表达式学起来也会比较难。实际上,正则表达式的学习并不难!它其实是一种非常实用且简单的字符串操作工具,主要是作为匹配字符串的模板,能够将某个字符模式与所搜索的字符串进行对比匹配,并且正则表达式只是一套标准规范,和具体的某种开发语言并没有关系。也就是说,正则表达式不是java、python等某个语言独有的,而是在各种语言中都通用的,只是在每种语言中可能会有个别细微的差别。

而在正式开始学习正则表达式之前,让我们先来了解一下正则表达式的概念:

正则表达式是由各种普通的字符(如a-z,A-Z、0-9),以及一些特殊字符(元字符)组成的文字模板,是一种用于模式匹配和替换的规范。通俗地说,我们可以把正则表达式理解成是一种可以对字符串进行各种特殊处理的工具,比如可以对字符串进行【查找、提取、分割、替换】等操作。

也即是说,正则表达式只是一个描述规则的字符串。所以,只需要编写出正确的规则,我们就可以让正则表达式去判断目标字符串是否符合规则。比如"Hello World"这样的字符串也是一个正则表达式,它可以匹配 "Hello World"这个字符串。一个【点号】也是一个正则表达式,它可以匹配任意一个字符,如"a" 、"A"、"1"等。

2. 基本语法

知道了正则表达式的基本概念之后,接下来我们还需要了解它的一些基本语法及其含义。以下是开发时常用的正则表达式基本语法,各种复杂的正则表达式其实都是由这些基本的语法规则组成的。大家要注意,正则表达式的匹配规则都是按照从左到右进行匹配的,并且通过不同的符号组合,可以实现对字符串的精确匹配、模糊匹配,也可以匹配字母、数字、各种符号等。

字符说明()标记子表达式的开始和结束位置。要匹配这些字符,请使用(和)[ ]用于确定中括号表达式的开始和结束位置。要匹配这些字符,请使用{}用于标记前面子表达式的出现频度。要匹配这些字符,请使用{和}\代表转义字符,将下个一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,n匹配字符n,\n匹配换行符,序列\\匹配\,\(匹配(。丨指定两项之间任选一项。如果要匹配丨字符本身,请使用\丨^表示否定,例如[^abc]表示非 a、b、c 的任意字符;[^a-f]表示不是 a~f 范围内的任意字符$匹配输入字符串结尾的位置。如果设置了RegExp对象的Multiline属性,$ 还会与"\n"或"\r"之前的位置匹配。*表示零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo",* 等同于 {0,}。+表示一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。?表示零次或一次匹配前面的字符或子表达式。例如,"do(es)?"匹配"do"或"does"中的"do"。? 等效于 {0,1}。&&,“与”运算:例如[a-z&&[def]],是 a-z 和 [def] 的交集,表示 d、e;f[a-z&&^bc]]是 a-z 范围内除 b 和 c 之外的所有字符;[ad-z] [a-z&&[m-p]]是 a-z 范围内除 m~p 范围之外的字符的所有字符“并”运算并运算与前面的枚举类似,例如[a-d[m-p]]表示 [a-dm-p]{n}n是非负整数,表示正好匹配n次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。{n,}n是非负整数,表示至少匹配n次。例如,"o{2,}"不匹配"Bob"中的"o",而匹配"foooood"中的所有 o。"o{1,}"等效于"o+"。"o{0,}"等效于"o*"。{n,m}m和n是非负整数,其中n


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3