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

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

前言


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


接下来我们正式开始!


什么是正则表达式

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


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


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


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


正则表达式:(^\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

结语

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


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