正则表达式 Regular Expression

正则表达式 Regular Expression ( 简称:RegExp)

功能:制定输入内容的规则,描述字符串的匹配方式,即用户输入的内容是否符合要求

创建正则表达式

1.构造函数:new RegExp(规则);

let str = "123a";
let re = new RegExp(/a/, "g");
console.log(re.test(str));//true

2.字面量: /规则/

let str = "123a"
let re = /a/g;
console.log(re.test(str));//trueq

match test

match 是字符串的方法,返回满足条件的内容

test 是正则的方法,返回字符串是否满足条件

即match返回数据,test返回Boolean值

let str = "vrf4ter43"
let re = /3/;
// match 是字符串的方法,返回满足条件的内容
// test 是正则的方法,返回字符串是否满足条件
// 即match返回数据,test返回Boolean值
console.log(str.match(re));//3
console.log(re.test(str));//true
//g全局查找
//不加g,只找第一个满足条件的内容,就不会继续匹配了
re = /4/g;
console.log(str.match(re));//[ '4', '4']
//正则默认情况下大小写敏感(区分大小写)
//加i,则实现不区分大小写
re = /R/ig;
console.log(str.match(re));//[ 'r', 'r']

g: global 全局

g全局查找
不加g,只找第一个满足条件的内容,就不会继续匹配了

re = /4/g;
console.log(str.match(re));//[ '4', '4']

i: insensitive 不区分大小写

正则默认情况下大小写敏感(区分大小写)
加i,则实现不区分大小写

re = /R/ig;
console.log(str.match(re));//[ 'r', 'r']

m: multiline 多行匹配

正则默认值,只匹配一行的内容

m可以实现进行多行匹配

let str = "123a\n1abc";
let re = /^1/img;//^1,第一位是不是1
console.log(str.match(re));//[ '1', '1' ]

以XXX开始

书写格式:^条件

let str = "123a1abc";
let re = /^1/img;
console.log(str.match(re));//[ '1' ]

以XXX结束

书写格式:条件$

re = /c$/img;
console.log(str.match(re));//[ 'c' ]

按位比较 []

中括号(代表按位比较,只要满足中括号里的任何一个值,都为真

let str = "123abdcabdc";
let re = /[a1b]/img;
console.log(str.match(re));//[ '1', 'a', 'b', 'a', 'b' ]

实现 手机号正则

let str1="13456789102"
let re1=/^[1][3-9][0-9]{9}$/g;
console.log(re1.test(str1));//true
console.log(str1.match(re1))
// 以a到z开头
re1=/^[a-z]i/;
console.log(str1.match(re1))

量词

let str1 = "13899997777"
let re1 = /[9]{4}/g;
console.log(str1.match(re1));//[ '9999' ]
re1 = /[0-9]{4}/g;
console.log(str1.match(re1));//[ '1389', '9997' ]
// {匹配的最少个数,匹配的最多个数}
// 注:默认是贪婪匹配
//     先匹配最多的,不满足后最多个数减1
//     一直减到最少个数,不再匹配
// 即:最少到最多之间的个数,先匹配最大的
// 不满足减1,直到小于最少的个数后不再匹配
re1 = /[0-9]{2,4}/g;
console.log(str1.match(re1));//[ '1389', '9997', '777' ]

【扩展】

let str = "122333a444455555666666";
// {n,} n到无穷
let re = /[0-9]{2,}/g;
console.log(str.match(re));
// {0,} 0到无穷(会取到一个或多个空字符串)
re = /[0-9]{0,}/g;
console.log(str.match(re));
// {0,1}
re = /[0-9]{0,1}/g;
console.log(str.match(re));

// (n?=m)选中n (条件是后面为m)
re = /[0-9](?=a)/g;
console.log(str.match(re));//[ '3' ]

// (n?!m)选中n (条件是后面不为m)
str ="3a6b7a8";
re = /[0-9](?!a)/g;
console.log(str.match(re));//[ '6', '8' ]

元字符

元字符代表
\d[0-9]
\D非[0-9]
\w[a-z 0-9 _]
\W非[a-z 0-9 _]
\s空白字符(空格,回车等)
\S非空白字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值