JavaScript正则表达式

目录

定义

特点

创建正则表达式

正则表达式的使用

模式修饰符

边界符

预定义符

字符范围

量词符

括号符()

正则表达式的捕获

贪婪匹配 

懒惰匹配

正则表达式的优先级


定义

1、是描述字符串结构的语法规则

2、是用于匹配字符串中字符组合的模式

3、是一个对象

特点

1、非常灵活

2、逻辑性非常强

3、以非常简单的方式达到对字符串进行复杂的控制

创建正则表达式

方式一:字面量 / /

语法:var 变量 = /表达式/

var reg = /123/  //长度为3 

方式二:RegExp构造函数方式

1、var 变量名 = RegExp(/表达式/)

var reg1 = RegExp(/abc/);

2、var 变量名 = new RegExp(/表达式/)

var reg2 = new RegExp(/aac/);

正则表达式的使用

(1)test()方法 用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,返回boolean值  如果复合规则返回 true,否则返回 false。

let s1 = '123';
console.log(reg.test(s1));
console.log(reg1.test(s1));
console.log(reg2.test(s1));

 

(2)match()方法  是String对象的方法,用来截取符合正则表达式规则的子串  返回值是字符串数组   

// 定义字符串
var str = 'good idea abc ff';
// 定义正则表达式
var reg = /\s../gi;
let s1 = str.match(reg);
console.log(s1);

  

注:转义字符‘\’  若要输出反斜杠,则需要连续两个'\'

(3)replace()方法 用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。

(4)exec()方法  用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。 

模式修饰符

基本语法:/表达式[switch]/ switch:表示模式修饰字符,可选,主要用于进一步对正则表达式进行设置。

(1)g:表示全局匹配

(2)i:忽略大小写

边界符

(1)^:表示匹配行首的文本

(2)$:表示匹配行尾的文本

以下这个表达式包含了模式修饰符和边界符:

var reg = /^abc$/gi;//以abc开头结尾并且全局匹配忽略大小写
console.log(reg.test('ABC'));//使用ABC测试结果是true  复合正则表达式的规则

预定义符

(1).:匹配除了‘\n’的任何单个字符

(2)\d:匹配所有0-9之间的任意一个数字,相当于[0-9]

(3)\D:匹配所有0-9以外的字符,相当于[^0-9]

(4)\w:匹配任意的字母、数字和下划线,相当于[a-zA-Z0-9]

(5)\W:除所有字母、数字、下划线以外的字符,相当于[^a-zA-Z0-9]

(6)\b:单词分界符

(7)\s:匹配非空格的字符,相当于[^\t\r\n\v\f]

字符范围

(1)[cat]:匹配字符集合中的任意一个字符c、a、t

(2)[^cat]:匹配除c,a,t以外的字符

(3)[A-Z]:匹配字母A-Z范围内的字符

(4)[^a-z]:匹配字母a-z范围外的字符

(5)[\u4e00-\u9fa5]:匹配任意一个中文字符

量词符

(1)?:匹配?前面的字符0次或1次 

let reg = /hi?t/;
let str = 'hit';
console.log(reg.test(str));

(2)+:匹配+前面的字符1次或多次

let reg = /bre+ad/;
let str = 'bread';
console.log(reg.test(str));

(3)*:匹配*前面的字符0次或多次

let reg = /bre*ad/;
let str = 'breeeead';
console.log(reg.test(str));

(4){n}:匹配{}前面的字符n次

let reg = /hi{3}t/;
let str = 'hiiit';
console.log(reg.test(str));

(5){n,}:匹配{}前面的字符最少n次

let reg = /hi{3,}t/;
let str = 'hiiiiiiiiiiiiiiiiiiiiiiiiiiit';
console.log(reg.test(str));

(6){n,m}:匹配{}前面的字符n~m次

括号符()

作用:改变限定符的范围

(1)改变限定符范围前:catch|er  匹配结果:catch、er

let reg = /catch|er/;
let s1 = 'cater';
console.log(reg.test(s1));
console.log(reg.exec(s1));


(2)改变限定符范围后:cat(ch|er)  匹配结果:catch、cater

let reg = /cat(ch|er)/;
let s1 = 'cater';
console.log(reg.test(s1));
console.log(reg.exec(s1));

(3)分组:分组前:abc{2}  表示{}前的c要出现2次

let reg = /abc{2}/;
let s1 = 'abcbc';
console.log(reg.test(s1));
console.log(reg.exec(s1));


分组后:a(bc){2}表示{}前的bc要出现2次

let reg = /a(bc){2}/;
let s1 = 'abcbc';
console.log(reg.test(s1));
console.log(reg.exec(s1));

 

正则表达式的捕获

捕获:使用小括号可以进行分组,当小括号后面有量词时,就表示对整个组进行操作。

let reg = /(\d)(\d)(\d)(\d)/;//表示4位数字,表示每位数字都是0-9之间
let s1 = '1234';
console.log(reg.test(s1));
console.log(reg.exec(s1));

贪婪匹配 

表示匹配尽可能多的字符  是正则表达式的默认匹配方式

let str = 'webWEBWebwEb';
let reg1 = /w.*b/gi;   //贪婪匹配
console.log(reg1.test(str));
console.log(reg1.exec(str));

懒惰匹配

表示匹配尽可能少的字符   通过?来实现  只要有一次匹配成功则不再继续进行匹配

let reg2 = /w.*?b/gi //懒惰匹配  表示只要有一次匹配成功则不再继续进行匹配
console.log(reg2.exec(str));

正则表达式的优先级

1级 :\
2级: ()、{}
3级:*、+、?、{n}、{n,}、{n,m}
4级:^、$、\任何元字符、任何字符
5级:|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值