若志 • 随笔 - 正则表达式
type: channel
link: https://rz.sb/tag/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/
items: 正则表达式学习笔记

正则表达式学习笔记
type: item
date: 2021-08-18T11:26:00+08:00
description: 正则是查询的艺术。除非不存在，否则就一定找得到。正则验证工具：regexpal、或百度正则验证工具正则定界符：正则中用到的字符不能用作定界符\反斜线是正则中的转义字符/和#可以用作定界符，注意：如果正则中用到，需要用反斜线进行转义!和{}也可以用作定界符（不常见）规范推荐：/和#作为正则定界符。正则中的原子：正则表达式的最小单位，也是用户需要匹配的内容。一个正确的正则表达式中至少要有一个原子。普通原子：可见与不可见如：直接输入匹配的字符（可见）/n换行符（不可见）原子集合：[a-z]、[A-Z]、[0-9]类原子：集合的简写如：\d：匹配任意一个整数，等价于[0-9]\d+：+表示1个或多个整数，等价于[0-9]+\w：正则运算符，+表示前面的原子至少要出现一次或多次\w+：表示所有的大小写字母或下划线集合（其实就是一个有效的php标识符）注：正则表达式中不允许直接写中文，因为中文存在不同的编码集。中文字符集：GBK（2个字节表示一个中文字符）UTF-8（3个字节表示一个中文字符）必须将中文转为unicode编码（还适用日文和韩文等多字节字符）可百度搜索工具进行转换。正则中的元字符：元：与圆同义，通用。元字符是原子的解释器，必须配合原子一起用元字符是原子的保镖，原子在哪里元字符就在哪。如：.：匹配换行符\n之外的所有字符.+：匹配所有字符^：脱字符，单独使用是限制起始原子，放在方括号中是取反，如：1 取除了\d+以外所有的字符元字符也可以出现在中间，如：p.p：.可以表示p和p中间的任意字符w{2}：只匹配2个ww{2}$：要求2个w后面不允许有任何内容$：限制必须以前面的原子结尾的字符才可以匹配成功。正则中的模式修正符：模式修正符对整个正则有效，所以要写在正则定界符外部，如：/\w+/ii：不区分大小写m：^$忽略换行符s：匹配所有匹配手机号码：国内手机号码都是由11位整数字符组成必须1开头，紧跟后2位对应不同运营商1\d{10}：匹配所有1开头的整数13-8\d{8}：匹配所有的手机号匹配邮箱地址：80360650@qq.comirils@qq.comirils.irils@qq.com^\w+(.\w+)*@\w+(.\w+)$^：限制只能是某些字符↓\w+：至少要有一个合法标识符(.w+)：作为单独原子表示.后面的二级地址*：是元字符，表示前面的原子可以出现0次，1次或多次。表示二级前缀可有可无。$：结束邮箱地址\d+ ↩