正则表达式

2021-10-21  本文已影响0人  三省吾身_9862

匹配一个字符用法

表达式 说明 例子
[] 匹配到[]里罗列到的任何一个字符,就算匹配到 [a-z678]匹配a-z678这些字符中的任意一个; /[456]/.test('1472') = true;匹配到了4,不是要匹配456,是其中一个,一个!!!
\d 匹配一个数字
\D 匹配一个非数字
\s 匹配一个空格、tab、换行
\S 匹配一个非空白符
\w 匹配一个字母、数字、下划线,等价于 [A-Za-z0-9_]
\W 匹配一个非字母、数字、下划线,等价于 [^A-Za-z0-9_]
. 匹配一个任意字符,除了换行符(\n)不能匹配

字符个数限制

var reg = /^vue+$/; +针对的是"前一个"e,不是前面的vue;vueeeeee是true;vuevue是false
var reg = /^(vue)+$/; 这样+针对的是vue,vueeeeee是false;vuevue是true
表达式 说明 例子
? 0或1个
* 0或多个
+ 1或多个
{n} n个
{n, m} n到m个
{n, m} n到m个
{n, } n到多个

\b,匹配有边界的单词

var reg = /\bmaster\b/;
reg.test('women.master-qita') // true 
reg.test('womenmasterqita') // false

匹配字符 和 匹配个数 组合使用

var reg = /\d/; 在字符中,只要匹配到一个数字就算true
var reg = /^\d$/; 在字符中,只能有一个数字
var reg = /^\d{1,9}$/; 在字符中,只能有数字,并且1到9个
var reg = /^\d[a-z]{1,9}$/; 在字符中,开头 1个数字,紧接着[a-z]可以1到9个 结尾
var reg = /\d[a-z]{1,9}/; 在字符中有一段,1个数字紧接着[a-z]可以1到9个, 就算true
var reg = /\d{2}[a-z]{1,9}/; 在字符中有一段,2个数字紧接着[a-z]可以1到9个, 就算true

逻辑匹配

表达式 说明 例子
| var reg = /.jpg|.png/; var reg= /.(c|a)ss$/
() 子表达式,分组 捕获一组数据
(?:表达式) 非捕获分组 想用分组来切割表达式,但又不想捕获数据
.*? 取消贪婪 把?放到 字符个数限制 后面,是取消贪婪;放到 匹配一个字符 后面,是个数限制
\n 分组回溯,引用第n个分组 /<(\w+)>(.?)</\1>/.test('123<font>提示</div>') ; /<(\w+)>(.?)</\1>/.test('123<font>提示</font>')
(?=表达式) 正向先行断言:(?=表达式)写在匹配字符的后面,指在某个位置向右看,表示所在位置右侧必须能匹配表达式 例子1:/喜欢(?=你)/.test('我喜欢你');喜欢后面必须是你 ;例子二: /(?=.?[a-z])(?=.?[A-Z]).{8,}/ 这段正则表达式规定了匹配的字符串中必须包含至少一个大写和小写的字母,至少8位
(?!表达式) 反向先行断言(?!表达式)写在匹配字符的后面;作用是保证右边不能匹配到表达式 例子1:/喜欢(?!你)/.test('我喜欢你');喜欢后面不是你 ;例子2:/@(?!qq.com)/ 编写正则表达式匹配不是qq邮箱的数据;例子3:/^(?!http://).{2,16}/ 不是 http:// 开头的字符串,2-16位字符
(?<=表达式) 正向后行断言:(?<=表达式)写在匹配字符的前面,指在某个位置向左看,表示所在位置左侧必须能匹配表达式 /(?<=王)\S+/.test('菲菲 王菲菲') 匹配王姓同学的名字
(?<!表达式) 反向后行断言:(?<!表达式)写在匹配字符的前面,指在某个位置向左看,表示所在位置左侧不能匹配表达式 /(?<!$)$[^$]+$(?!$)/.test('a = a^2'); 匹配一个$符号中的数据
上一篇下一篇

猜你喜欢

热点阅读