美文网首页
正则表达式

正则表达式

作者: Wanney | 来源:发表于2021-12-21 22:39 被阅读0次

前言

学习好前端技术,想稍微深入一点扩展自己的技术,怎么也绕不开要学到它。很多前端人性化的交互,人性化的体现就在于各种智能的交互场景。比如,帮你补充需要输入的内容,帮你高亮模糊匹配你想要搜索的内容,帮你校验你输入的内容是不是一个电话号码或者邮箱地址等。

定义

正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串的一种文本模式。一版以双斜杠的形式出现,如:

// 从字符串 str 中提取数字部分的内容(匹配一次):
const str = "abc123hhds"  
const pattern = /[0-9]+/   
document.write(str.match(pattern))  // 123

这里具体语法不再赘述,直接搬了,还有在线测试工具帮助快速掌握。请戳


一些值得注意的语法

  • 限定符的贪婪写法和非贪婪写法,区别在于一个“?”。如:+?或*?,为非贪婪表达式,也叫做最小匹配,一般用于匹配一对符号(如:括号,尖括号等)下的所有内容。
  • 用()可以为匹配单元分组,而在括号内最前面加上,?:则表示该分组为非捕获元之一,类似的非捕获元还有:?=、?<=、?!、?<! 。它们除了标记为非捕获元还有更多含义:
    • exp1(?=exp2):查找 exp2 前面的 exp1。
    • (?<=exp2)exp1:查找 exp2 后面的 exp1。
    • exp1(?!exp2):查找后面不是 exp2 的 exp1。
    • (?<!exp2)exp1:查找前面不是 exp2 的 exp1。
  • 这里贴一个比较综合性的解析图,里面包含了很多语法和实用技巧:


    正则表达式解析
  • 要想看懂一个正则表达式,运算优先级必须要知道,否则都不知道改怎么拆解一个长长的表达式,优先级由高到低依次是:
    • 转义符 \
    • 圆括号和方括号 (), (?:), (?=), []
    • 限定符 *, +, ?, {n}, {n,}, {n,m}
    • 定位点和序列 ^, $
    • 任何元字符(需要以\开头的字符),普通字符
    • 替换,"或"操作符 |
      注意: 因为元字符或普通字符都比"或"操作符|优先级高,因此使得m|food匹配的是"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"

常用的正则表达式

  1. URL链接地址
const isUrl = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/
  1. 有效的密码:至少8个字符,不超过20位,包含至少1个字母,1个数字和1个特殊字符
const isValidPwd = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8, 20}$/
  1. 邮箱地址:
const isEmail = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
  1. 汉字:
const isChinese = /^[\U4E00-\U9FA5]{0,}$/
  1. 身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:
const isIDCard = /^(\d{15})|(\d{18})|(\d{17}(\d|X|x))$/

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/zphfqrtx.html