广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >正则表达式之字符串模式匹配实例详解
  • 231
分享到

正则表达式之字符串模式匹配实例详解

2024-04-02 19:04:59 231人浏览 薄情痞子
摘要

目录前言什么是正则表达式字符范围匹配元字符多次重复匹配定位匹配贪婪模式与非贪婪模式表达式分组结语前言 今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会

前言

今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会用到的,学会正则表达式之后会让你除了提高效率外,会给你带来绝对的成就感。

接下来我们正式开始!

什么是正则表达式

正则表达式是检查、匹配字符串的表达式

正则表达式用来描述某种规则,同时它不是某种语言专有的技术,它对主流的语言都有良好的支持。

正则表达式的主要使用场景是:字符串检验,查找与替换。

示例:检查输入身份证号是否合法的正则表达式

正则表达式:(^\d{18}$)|(^\d{17}(\d|X|x)$)

现在你也许看不懂,但是等看完这篇博客之后在加以练习你就能轻松写出来了。

字符范围匹配

下面这个表是对单个字符约束的一些正则表达式:

正则表达式说明
A精准匹配单个字符
x|y允许出现的2个字符
[xyz]字符集合,允许出现的2个字符
[a-z]字符集合
[^xyz]集合内字符不允许出现

例如:匹配数字范围(0570-0579)

正则表达式为:057[0-9]

元字符

用于匹配的特殊符号又称作元字符

常用的元字符如下:

正则表达式说明
\d匹配任意单个数字
\D匹配\d规则以外的任意单个字符
\w匹配任意单个数字字母下划线
\W匹配\w规则以外的任意单个字符
\s匹配单个空格
\n匹配单个换行符
.匹配任意单个字符(换行符除外)
\.特殊字符只匹配.

示例:请匹配杭州与宁波座机号码(0571|0574-XXXXXXXX)

正则表达式为:057[14]-\d\d\d\d\d\d\d\d

多次重复匹配

当我们匹配的字符串比较长,比如身份证号有18为一个一个写\d比较麻烦,多次重复匹配只能简化我们的操作。

常用的多次重复匹配如下:

正则表达式说明
A{N}精准N次匹配
A{N,}最少出现N次
\d{N,M}最少可以出现N次,最多可以出现M次
\d*可以出现零次至无限次
\d+最少出现一次,相当于{1,}
\d?最多出现1次,相当于{0,1}

示例:匹配全国的座机号(区号3或4位-电话号码7或8位)

正则表达式:\d{3,4}-\d{7,8}

定位匹配

正则表达式说明
^A.*头匹配-以字符A开头
.*A$尾匹配-以字符A结尾
^A.*A$全字匹配-以字符A开头结尾

示例:以C开头,B结尾的字符串

正则表达式:^C.*B$

贪婪模式与非贪婪模式

贪婪模式:在满足条件的情况下尽可能多匹配到字符串
非贪婪模式:在满足条件的情况下尽可能少匹配到字符串

正则表达式在默认的情况下就是贪婪模式

示例:输入123456

  • 在使用正则表达式\d{4,5},之后匹配到的是12345,可见这就是贪婪模式。
  • 在使用正则表达式\d{4,5}?,之后匹配到的是1234,可见这就是非贪婪模式。

可见,只需要在正则表达式的后面加一个?,就可以从贪婪模式变换到非贪婪模式。

表达式分组

分组就是将正则分组为多个子表达式。

示例:abababcdcdcd

正则表达式:(ab){3}(cd){3}

示例:检查输入身份证号是否合法的正则表达式

正则表达式:(^\d{18}$)|(^\d{17}(\d|X|x)$)

结合javascript练习正则表达式

js中定义正则表达式对象只需要在//之间书写正则表达式即可

我们实现用表单来验证输入姓名和身份证号是否合法。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<fORM action="#" method="post" id ="frmInfo">
		<div id="err" style="color:red">
			
		</div>
		<div>
			姓名:<input id="name" name="name"/>
		</div>
		<div>
			身份证:<input id ="idno" name="idno"/>
		</div>
		<div>
			<input type = "submit"/>
		</div>
	</form>
	<script type="text/javascript">
		document.getElementById("frmInfo").onsubmit = function(){
			//汉字范围\u4e00-\u9fa5
			var regex1 = /^[\u4e00-\u9fa5]{2,8}$/;
			var regex2 = /^[1234568]\d{16}[0-9xX]$/;
			var name = document.getElementById("name").value;
			var idno = document.getElementById("idno").value;
			//利用正则表达式进行匹配,true-匹配,false-失败 
			if(regex1.test(name) == false){
				document.getElementById("err").innerHTML = "无效姓名";
				return false;
			}else if(regex2.test(idno) == false){
				document.getElementById("err").innerHTML = "无效身份证号";
				return false;
			}else{
				alert("验证通过,准备提交!");
				return true;
			}
		}
	</script>
</body>
</html>

输出:

结语

多加练习之后,书写起来还是比较简单的。而且很有成就感。加油!

到此这篇关于正则表达式之字符串模式匹配的文章就介绍到这了,更多相关正则表达式字符串模式匹配内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 正则表达式之字符串模式匹配实例详解

本文链接: https://www.lsjlt.com/news/146871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 正则表达式之字符串模式匹配实例详解
    目录前言什么是正则表达式字符范围匹配元字符多次重复匹配定位匹配贪婪模式与非贪婪模式表达式分组结语前言 今天我们来学习正则表达式,正则表达式的应用十分广泛,几乎每个涉及到交互的项目都会...
    99+
    2022-11-13
  • Java正则表达式循环匹配字符串方式
    目录正则表达式循环匹配字符串Java匹配正则表达式大全我们先举个例子来看看Java匹配正则表达式匹配表达式的特殊情况正则表达式循环匹配字符串 public static void m...
    99+
    2022-11-13
  • Python正则表达式匹配字符串中的数字
    这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下1.使用“\d+”匹配全数字...
    99+
    2023-06-01
  • Java字符串 正则表达式详解
    目录一、规则表1.字符2.字符类 .3.边界匹配符4.逻辑操作符5.量词二、Pattern类1.Pattern类的实例获取—compile方法2.split方法3.Pattern中匹...
    99+
    2022-11-12
  • python正则表达式对字符串的查找匹配
    目录常用的RegEx基础语法常用的RegEx函数以下为部分示例:总结Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明 常用的RegEx基础语...
    99+
    2022-11-11
  • 如何进行正则表达式匹配字符串的实现
    如何进行正则表达式匹配字符串的实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用正则表达式最常用的是考虑实现正则表达式匹配的判断,在实际工作中经常会遇到什么...
    99+
    2023-06-17
  • Java中正则表达式匹配过程实例详解
    目录下面是Java正则表达式的语法字符:正则表达式简单的匹配过程:(1) 基础匹配过程(2)贪婪模式(3)非贪婪模式 (4)零宽度匹配过程总结正则表达式:定义字符串的模式,...
    99+
    2022-11-13
  • 正则表达式怎么匹配多个字符
    正则表达式可以使用特殊符号来匹配多个字符:1. 使用重复符号:可以使用`*`来匹配零个或多个字符,使用`+`来匹配一个或多个字符,使用``来匹配零个或一个字符。例如,正则表达式`ab*c`可以匹配字符串"ac"、"abc"、"abbc"...
    99+
    2023-08-11
    正则表达式
  • C#中如何使用正则表达式和字符串匹配
    C#中如何使用正则表达式和字符串匹配正则表达式是一种强大的文本处理工具,它可以帮助我们有效地在字符串中进行模式匹配和提取。在C#中,通过使用System.Text.RegularExpressions命名空间下的Regex类,我们可以轻松地...
    99+
    2023-10-22
    正则表达式 (Regex) 字符串匹配 (string matching) C#编程 (C# Programming)
  • java怎么用正则表达式匹配与提取字符串
    本文小编为大家详细介绍“java怎么用正则表达式匹配与提取字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“java怎么用正则表达式匹配与提取字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先给出一个匹...
    99+
    2023-07-02
  • java如何用正则表达式匹配与提取字符串
    java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法。 首先给出一个匹配字符串的例子(判断line是否符...
    99+
    2022-11-13
  • java正则表达式匹配字符串的方法是什么
    在Java中,我们可以使用正则表达式来匹配字符串,可以使用以下步骤实现:1. 导入`java.util.regex`包,该包包含了用...
    99+
    2023-08-09
    java
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • python使用正则表达式匹配字符串开头并打印示例
    本文实例讲述了python使用正则表达式匹配字符串开头并打印的方法。分享给大家供大家参考,具体如下: import re s="name=z1hangshan username=fff url=www....
    99+
    2022-06-04
    示例 字符串 开头
  • VBS中正则表达式如何实现字符匹配
    这篇文章主要介绍了VBS中正则表达式如何实现字符匹配,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。字符匹配句点 (.) 匹配一个字符串中任何单个的打印或非打印字符,除了换行符...
    99+
    2023-06-09
  • php如何实现正则表达式匹配一段字符串替换
    这篇文章主要介绍了php如何实现正则表达式匹配一段字符串替换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php实现正则表达式匹配一段字符串替换的方法:1、创建一个PHP示例...
    99+
    2023-06-21
  • php怎么实现正则表达式匹配一段字符串替换
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php怎么实现正则表达式匹配一段字符串替换?PHP 正则表达式替换一部分内容preg_replace('/&topic=(.*)&type=/&#...
    99+
    2015-04-21
    php
  • Java正则表达式匹配字符串并提取中间值的方法实例
    目录前言场景一:提取SAML2报文解析场景2:提取sql中的表名和字段总结前言 有时候正则表达式不只是匹配一下什么数字/邮箱/身份证/日期等等,还需要匹配某一段文字,并按照既定格式提...
    99+
    2022-11-13
  • 数据库MySQL 通配符与模式匹配正则表达式
    今天一个同事说他写了一个sql语句查询没有结果,他是这样写的 SELECT * FROM Persons WHERE City&n...
    99+
    2022-10-18
  • 正则表达式匹配不包含某些字符串的技巧
    正则表达式提供了一些技巧来匹配不包含某些字符串的情况。下面是一些常用的技巧:1. 使用否定预查:否定预查通过在匹配的字符串前面加上`...
    99+
    2023-08-09
    正则表达式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作