正则表达式

本文详细介绍了正则表达式的使用,包括基本语法如星号、加号、问号的含义,以及定位符、贪婪匹配、先行断言和后行断言的概念。同时,通过实例解析了test、exec和match方法在全局匹配和多行匹配中的应用,帮助读者深入理解正则表达式的功能和操作技巧。
摘要由CSDN通过智能技术生成

正则表达式

1.基本语法

 // +:一个、多个
 // *:0个、一个、多个
 // ?:0个、一个
 abc+d 可匹配:abcd abccd ...
 abc*d 可匹配:abd abcd abccd ...
 abc?d 可匹配:abcd abd
 // 普通字符
 [abc]匹配目标的所有a b c
 [^abc]匹配目标的所有非a b c字符

2.定位符

// ^ $ \b \B
/^abc [0-9]+/ //以abc开始后面一个或多个数字
/[\d+] abc$/ //以abc结尾前面有一个或多个数字
/\bao/ //可以匹配 aoC   不能匹配CaoD CDao (匹配单词边界)
/\Bao/ //可以匹配CaoD 不能匹配aoC CDao (匹配非单词边界)

3.贪婪

/<.*>/.match(<h1>dsdasdas</h1>) //匹配<h1>dsdasdas</h1>
/<.*?>/.match(<h1>dsdasdas</h1>) //匹配<h1>

4.先行断言(lookahead)和后行断言(lookbehind)

/abc(?=[0-9]+)/g // 匹配数字前面的abc
/(?<=[0-9]+)abc/g //匹配数字后面的abc
/abc(?![0-9]+)/g  //匹配非数字前面的abc
/(?<![0-9]+)abc/g  //匹配非数字后面的abc

5.test exec match
test() 返回值为boolen
test()检测字符串是否符合正则规则,符合返回true,否则返回false

const a = 'ak1a2a3';
const reg = /a./;
const test = reg.test(a) //true

符串符合正则规则,则返回值为长度为1的数组,数组内存放着第一个符合规则的子串,数组的三个属性:index:符合规则子串的起始位置; lastIndex:符合规则子串的结束位置; input:保存着str

const a = 'ak1a2a3';
const reg = /a./;
const exec = reg.exec(a)    // ['ak', index: 0, input: 'ak1a2a3', groups: undefined]

match() [match()方法属于字符串的方法,上面两个方法属于正则的方法]当没有在正则表达式中写g时,match()的用法跟exec()相同,但当用了g以后,match一次性返回所有满足条件的子串,而exec()只返回一个。match()方法返回的数组同样拥有三个属性

const a = 'ak1a2a3';
const reg = /a./;
const match = a.match(reg)    //['ak', index: 0, input: 'ak1a2a3', groups: undefined]
  1. g m
// g 全局匹配 

// 对test无影响
const a = 'ak1a2a3';
const reg = /a./g;
const reg1= /a./;
console.log(reg.test(a),reg1.test(a)) //true true

// exec:无g匹配第一个,有g匹配全局不同位置
const a = 'ak1a2a3';
const reg = /a./g;
const reg1= /a./;
console.log(reg.exec(a),reg1.exec(a)); 
console.log(reg.exec(a),reg1.exec(a)); 
console.log(reg.exec(a),reg1.exec(a)); 
//
['ak', index: 0, input: 'ak1a2a3', groups: undefined] ['ak', index: 0, input: 'ak1a2a3', groups: undefined]
['a2', index: 3, input: 'ak1a2a3', groups: undefined] ['ak', index: 0, input: 'ak1a2a3', groups: undefined]
['a3', index: 5, input: 'ak1a2a3', groups: undefined] ['ak', index: 0, input: 'ak1a2a3', groups: undefined]
// match: 无g匹配第一个,有g一次匹配全局不同位置
const a = 'ak1a2a3';
const reg = /a./g;
const reg1= /a./;
console.log(a.match(reg),a.match(reg1));
//  ['ak', 'a2', 'a3']  ['ak', index: 0, input: 'ak1a2a3', groups: undefined] 
// m 多行匹配 必须用 ^或 $
const a = `as
           adfag`;
const reg = /^a./g;
const reg1 = /a./g;
const reg2 = /^a./gm;
const reg3 =  /a./gm;
console.log(a.match(reg),a.match(reg1),a.match(reg2),a.match(reg3))
// ['as']   (3) ['as', 'ad', 'ag']    ['as']     (3) ['as', 'ad', 'ag']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值