【正则表达式】字符串模式匹配,提高开发效率

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

前言


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


接下来我们正式开始!


什么是正则表达式

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


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


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


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


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


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


字符范围匹配

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

image.png


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


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


元字符

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


常用的元字符如下:

image.png

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


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


多次重复匹配

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


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

image.png

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


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


定位匹配

image.png

示例:以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中定义正则表达式对象只需要在//之间书写正则表达式即可


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


Insert title here

姓名:

身份证:

 

 

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

输出:


微信图片_20220523212256.png


微信图片_20220523212318.png

image.pngimage.png

结语

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


相关文章
|
4月前
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配任意字符串
【4月更文挑战第1天】
2295 0
|
4月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
4月前
|
JavaScript 前端开发
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
|
4月前
|
算法 测试技术 C#
【动态规划】【字符串】C++算法:正则表达式匹配
【动态规划】【字符串】C++算法:正则表达式匹配
|
19天前
|
JavaScript 前端开发 Java
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
|
3天前
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
24 0
|
21天前
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
31 0
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
3月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
3月前
|
数据采集 Java 开发者
正则表达式替换字符串的最佳实践与应用
正则表达式替换字符串的最佳实践与应用