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

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

前言


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


接下来我们正式开始!


什么是正则表达式

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


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


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


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


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

结语

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


相关文章
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
5月前
|
Python
133 python高级 - 正则表达式(原始字符串)
133 python高级 - 正则表达式(原始字符串)
28 0
|
6月前
|
C++
使用 ABAP 正则表达式提高字符串解析的执行效率
使用 ABAP 正则表达式提高字符串解析的执行效率
60 0
|
7月前
|
程序员
用正则表达式判断字符串形式正误(例:判断电话号码属地是否为中国大陆)
用正则表达式判断字符串形式正误(例:判断电话号码属地是否为中国大陆)
44 0
|
1月前
|
Linux Perl
使用awk和正则表达式过滤文本或字符串 - 详细指南和示例
使用awk和正则表达式过滤文本或字符串 - 详细指南和示例
60 0
|
8月前
|
Java
避免分割字符串的常见错误:正则表达式元字符未转义
在编程和文本处理中,我们经常需要将一个字符串按照特定的分隔符拆分成多个部分。为了实现这一目标,我们使用分割函数或正则表达式来定义我们所需的分隔符。 在 Java 的 String 类的 split() 函数中,如果你使用字符串参数作为分隔符,例如 split(","),它会按照每个字符作为分隔符进行字符串拆分。
58 0
|
4月前
|
算法
【面试算法——动态规划 21】正则表达式匹配(hard)&& 交错字符串
【面试算法——动态规划 21】正则表达式匹配(hard)&& 交错字符串
|
9月前
|
JavaScript 前端开发 索引
javascript截取两个符号之间的字符串(2):lastIndexOf匹配和正则表达式匹配
javascript截取两个符号之间的字符串(2):lastIndexOf匹配和正则表达式匹配
272 0
|
4月前
通过正则表达式获取字符串中的省市区
通过正则表达式获取字符串中的省市区
49 0
通过正则表达式获取字符串中的省市区
|
4月前
|
Java
每日一刷《剑指offer》字符串篇之正则表达式匹配
每日一刷《剑指offer》字符串篇之正则表达式匹配
51 0
每日一刷《剑指offer》字符串篇之正则表达式匹配