JavaScript正则表达式

什么是正则表达式

作用:通常被用来检索、替换那些符合某个模式(规则)的文本
正则表达式语法:

/正则表达式主体/修饰符(可选)
var t = /test/i

一、正则表达式修饰符

作用:把字符串中满足条件的字符串全都匹配一次

修饰符描述
g全局匹配
i忽略大小写
gi全局匹配+忽略大小写

二、正则表达式组成

元字符串:字符串的条件

元字符描述
\d匹配数字
\D匹配任意非数字的字符
\w匹配字母或数字或下划线
\W匹配任意不是字母,数字,下划线
\s匹配任意的空白符
\S匹配任意不是空白符的字符
.匹配除回车和换行符以外的任意单个字符
^表示匹配行首的文本(以谁开始)(注意:只有^写在规律前面,其他都写在规则后面)
$表示匹配行尾的文本(以谁结束)

限定符:用于查找某个范围内的字符

限定符描述
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

量词:匹配的数量

量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。

括号:用于查找某个范围内的字符

括号描述
[abc]表示匹配其中的任一字符,相当于或的意思。
[^]匹配除中括号以内的内容。
(x l y)从两个直接量中选择一个,分组。

其他

修饰符描述
l或者,选择两者中的一个。注意 l 将左右两边分为两部分,而不管左右两边有多长多乱。
\转义符,特殊字符和普通字符之间的转换。
[\u4e00-\u9fa5]匹配汉字。

三、正则方法

1.常用字符串方法

search()
作用:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
如果没有找到任何匹配的子串,则返回 -1。

var str="hello guagua!"; 
var n=str.search("guagua");
console.log(n) //输出结果为6

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

var str="hello guagua!"
var n=str.replace(/guagua/, "alisa")
console.log(n) //输出结果为alisa

2.正则表达式方法

test()
作用: 检测一个字符串是否匹配某个正则。满足返回true,否则返回false

regexp.test(str)
var regexp = /^1[3-9]\d{9}$/; // 手机号正则
console.log( regexp.test('13588888888') ); // true
console.log( regexp.test('12588888888') ); // false 第2位不满足

正则方法test会受到正则对象全局g的影响 ,会导致正则对象lastIndex属性值,lastIndex是下次开始往后匹配的起始位置,未加全局g,则lastIndex属性值一直从0开始往后匹配。

var regexp = /^1[3-9]\d{9}$/g;
console.log( regexp.test('13588888888') ); // true
console.log(regexp.lastIndex); // 11

//regexp.lastIndex = 0; 重置下次开始匹配的位置为0,下面的test结果就会为true
console.log( regexp.test('13588888888') ); // false
console.log(regexp.lastIndex); // 0

console.log( regexp.test('13588888888') ); // true
console.log(regexp.lastIndex); // 11

一般对于结果满足或不满足的,正则对象不要加全局g即可。

exec()
作用: 返回正则匹配的结果,以一个数组返回 。此数组第一个元素(下标0)是正则相匹配的字符串,后面的元素依次是括号中捕获组的内容。未匹配到则返回null

此和方法和test一样,都会受到正则全局标识g的影响。

加g测试:

var regexp = /(\d{3})\d{4}(\d{4})/; //未加g
regexp.exec('13588888888') ; // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
regexp.lastIndex; // 0
regexp.exec('13588888888') ; // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
regexp.lastIndex; // 0
regexp.exec('13588888888') ; // ["13588888888", "135", "8888", index: 0, input: "13588888888"]

加g测试:

var regexp = /(\d{3})\d{4}(\d{4})/g; //`加g
regexp.exec('13588888888'); // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
regexp.lastIndex; // 11
regexp.exec('13588888888'); // null
regexp.lastIndex; // 0
regexp.exec('13588888888'); // ["13588888888", "135", "8888", index: 0, input: "13588888888"]

四、常用的正则方法大全

太长了,就不写在一起了 撮我另一篇吧:https://blog.youkuaiyun.com/alisa_lisa/article/details/87868280

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值