《正则表达式必知必会》笔记

开发工具 luoluolzb 浏览855次

正则表达式(regular expression)用来匹配和处理文本的规则字符串。
它主要有两个功能:匹配和替换文本。

Js正则表达式在线测试:
https://www.luoluolzb.cn/product/tool/js-regular-expression

匹配单个字符

符号 功能
\ 对元字符进行转义,使之匹配原字符
. 匹配任意一个字符
[] 定义字符集,匹配结果可以是方括号中的任意字符。如[a-z]、[A-Z]、[0-9]。使用^可以对字符集取反如[^a-z]匹配非小写字母的其他字符

重复匹配

符号 功能
* 前一个字符(集)重复>=0次
+ 前一个字符(集)重复>=1次
? 前一个字符(集)重复0次或1次
{n} 前一个字符(集)重复n次
{s,n} 前一个字符(集)重复s~n(包含s和n)次
{s,} 前一个字符(集)重复>=s次

贪婪型字符:*、+、{n,} 会尽可能的匹配多的字符
它们懒惰型版本(后面加个?):*?、+?、{n,}? 可以让他们碰到第一个匹配时停止

位置匹配

符号 功能
\b 匹配单词的开始或结尾
\B 不匹配单词的开始或结尾
^ 匹配整个字符串开头,多行模式下匹配行首
$ 匹配整个字符串结尾,多行模式下匹配行尾
(?m) 放在模式的最前面,将每行当做一个字符串来处理。用来配合^和$使用

子表达式

符号 功能
() 用来包含子模式,构成一个整体
a|b 匹配a或b,a和b可以是子模式,可以多个连用

回溯引用和查找

符号 功能
\n 引用模式中的第n个子模式
?=pattern 正向前匹配:必须匹配pattern但不在结果中返回
?!pattern 负向前匹配:不匹配pattern的内容但不在结果中返回
?<=pattern 正向后查找:必须匹配pattern但不在结果中返回
?<!pattern 负向后查找:必须匹配pattern但不在结果中返回

注意:js不支持前后查找和负向后查找

嵌入条件

符号 功能
(?(condition)yes-pattern|no-pattern) condition匹配到则执行yes-pattern, 否则执行no-pattern, no-pattern可以不写。

注意:js正则不支持嵌入条件

常用转义字符

符号 功能
\f 换行页
\n 换行符
\r 回车符
\t 制表符
\v 垂直制表符
\d 数字字符,[0-9]
\D 非数字字符,相当于[^0-9]
\w 字母和数字字符或下划线,相当于[a-zA-Z0-9_]
\W 非字母和数字字符或下划线,相当于[^a-zA-Z0-9_]
\s 空白字符,相当于[\f\n\r\t\v]
\S 非空白字符,相当于[^\f\n\r\t\v]
\xxx 八进制字符
\xdd 十六直接字符
\uxxxx 十六进制Unicode字符

常用正则表达式

  • IP地址:

    (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))
    

    组成:四个0-255的数字组成用三个.隔开

  • URL地址:

    https?://[-\w.]+(:\d+)?(/([\w/_.]*)?)?
    

    组成:协议名、主机名、端口号、文件路径

  • 邮箱地址:

    (\w+\.)*\w+@(\w+\.)+[A-Za-z]+
    
  • HTML注释:

    <!-{2,}.*?-{2,}>
    

本文标签: 正则表达式

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.luoluolzb.cn/articles/23/notes-on-regular-expression-must-know-must-know
您需要登录后才发布评论。 点此登录
用户评论 (0条)

暂无评论,赶紧发表一下你的看法吧。