关于正则表达式

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular
Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本

test/match
正则表达式test() 返回是否满足我的条件,T,F
例:

let re =/a/;
let  str = "abc";
console.log(re.test(str));//true;
let re1  new  RegExp("a");
let str1  = "abc";
console.log(re1.test(str1));//true
字符串match()              返回满足条件的内容

例:

let re = /a/;
let str ="abc";
console.log(str.match(re));//"a"

let re1 = new RegExp("a");
let str1 = "abc";
console.log(str1.match(re1));//"a"

g:global 全局
输出所有满足条件的内容,如果不加g,则只输出第一个满足的内容
例:

let re1 =new RegExp("ab","g");
let str1 = "ababe";
console.log(str1.match(re1));//"ab" "ab"

大小写是否敏感
i:是否区分大小写,如果写i就不区分,不写i就区分大小写
例:

let re1 =new RegExp("ab","g");
let str1 = "abABe";
console.log(str1.match(re1));//"ab" 

let re1 = new RegExp("ab","ig");
let str1 = "abABe";
console.log(str1.match(re1));//"ab""AB"

m:多行匹配
查找的字符串有换行符(\n)

例:返回每行以a开头的内容

let re = /^a/gm;
let str = "abc\nabc";
console.log(str.match(re));//"a" "a"

例:
返回匹配以“字母”开头的内容

let  re  = /^[A-z]/g;
let  str1 = "abac";

例:返回匹配以“数字开头的内容”

let  re  =/^[0-9]/gi;

let str1 ="ABcd"
console.log(str1.test(re));//null

str1 = "0ABcd"
console.log(str1.test(re));//"0"

例:
返回以数字结尾的内容

let re = /[0-9]$/gi;
let str1 = ""ABcd";
console.log(str1.macth(re));//null

str1 ="0ABcd1"
console.log(str1.macth(re));//1

[]表达式

let re = /[ab][c]/g;
let str = "abcd";
console.log(str.match(re));//"bc"

//匹配3个字符,第1位内容是a或者b 第2位内容必须是c或者d 第3位必须是d

let  re =/[ab][cd][d]/g;
let str = "abcd";
console.log(str.match(re));//"bcd"

如果在[]里面(在表达式中)加了^就代表“非”的意思

let re =/[^ab]/g;
let str ="abcd";
console.log(str.match(re));//null

匹配3位字符,第1位不是a或者b 第2位是c或者d

let re =/[^ab][cd][d]/g;
let str ="abcd";
console.log(str.match(re));//ecd

{}

{n}  n取值量词   量词范围:0到正无穷
let re =/[1][0-9]{10}/g;
str = "18888888888";
console.log(str.match(re));//18888888888

{n,m} n,m取值量词
例:
{2,3}匹配满足2或3个的内容

【n?m;】
功能:查找的是n,满足条件后,只输出n,m是查找a的条件,m不会输出

let str  = "abcdefg";
let re = /a(?=b)/g;
console.log(str.match(re));//"a"

【n?!m;】
功能:查找的是n,满足条件后,只输出n,m是查找a的条件,即n后面必须不是m,并且m不会输出

let str  = "abcdefg";
let re = /a(?!b)/g;
console.log(str.match(re));//"a"

贪婪模式:
会进行最大值的匹配,知道不满足为止。在进行最小值的匹配。

{n,}表示最少n个,最大到正无穷。
+表示{0,}
let  re = /\d+/g;
str ="23ia578234sdpj1f";
console.log(str.match(re));
//'23', "578234", "1"
*表示{0,}
let  re = /\d*/g;
str ="23ia";
console.log(str.match(re));
//'23', '' , '' , ''

注:在匹配的过程中,会有一个逻辑位置,即字符串的最后一个字符串的后面的位置
上例中a后面的位置,就是逻辑位置

非贪婪模式(慵懒模式)正向预查、正向断言
格式:在量词后面加一个问号。
功能:能少则少,不会再向多匹配
例1:

let  str  ="10000000000";
let re = /\d+?/g;
//等价于取两个数字,即/\d{2}/g;
console.log(str.match(re));

例2:

let str = "100000000000";
let re = /\d+?/g;
//等价于取一个数字,因为,+取值为一到正无穷。即/\d{1}/g;
console.log(str.match(re));//每一个数字

例:

let str = "10000000000";
let re = /\d*?/g;
//等价于取0个数字,因为,*取值为0到正无穷。即/\d{0}/g;
console.log(str.match(re));//多个空格



?表示{0,1}
let re = /\d?/g;
str = "23ia";
console.log(str.match(re));
//"2", "3", " ", " ", " "

元字符,简记

\d 代表数字
\D 代表非数字
例:

let re = /[\d]/g;
str = "q2p";
console.log(str.match(re));//"2"

\w [a=z A-Z 0-9 _]
\W ^\w
例:

let re = /[\w]/g;
str = "12345qwerty;";
console.log(str.match(re));//";"

边界符
\b 判断字符串是否以XX开头,或者以XX结尾
\B ^
例:

re = /\bac/g;
str = "acbacdebaacac";
console.log(str.match(re));//ac

\s 空白字符 空格 回车 tab(缩进)
" " \r \t(制表符)
\S ^\s

如果表达式中写的内容是\d\D或\s\S(不仅是d和s)的话。
就是进行互补,最终会匹配所有可输入字符。

【注:特点】

let  str ="abcaabc";
let re = /^abc$/g;
如果判断内容既是开始,又是结束。
console.log(str.match(re));//null


正确的:
let  str ="abc";
let re = /^abc$/g;
如果判断内容既是开始,又是结束。
console.log(str.match(re));//null

()
1、可以设置多个条件。(一真为真);

let str = "abcd";
let re = /(abc|bcd)/g;
console.log(str.match(re));

2、反向引用获取内容

【正则表达式的属性】

re.global // 是否开放全局查找               //false
re.multiline //是否开放多行匹配             //false
re.ignoreCase// 是否开放大小写不敏感         //true


re.lastIndex
re.source  //表达式里的内容                 //\d

【正则表达式的方法】
re.test(); //返回字符串是否满足表达式内容。
re.exec(); //返回字符串中满足表达式的下标。

【lastindex属性与exec()配套使用】
表示查找下次匹配的时候光标的开始位置
如果已经查找到符合内容的位置,
则lastindex就会在符合内容的后一位

let str = "ab1c1eeeeabeeeeabee";
let re = /ab/g;

console.log(re.lastindex); //0;
console.log(exec(str)); //0;

由于lastindex是一个属性,我们可以进行修改。
修改的是查找的起始位置。
console.log(ree.lastindex);  //2
re.lastindex = 0;
console.log(re.exec(str));  //0

console.log(re.lastindex); //2
console.log(re.exec(str));  //9

字符串方法:
【search】(查找下标所在位置)

let str = "123abc1234123"
let re = /a/g;
console.log(str.search(re));//3

【replace】替换
替换字符串里的字符 replace(a,b);
a表示被替换的字符
b表示替换后的字符

let str = "Jg445g";
let re = /g/g;表示替换的字符是g
console.log(str.replace(re,"G"));表示把替换的字符g换成G;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值