什么是正则表达式
作用:通常被用来检索、替换那些符合某个模式(规则)的文本
正则表达式语法:
/正则表达式主体/修饰符(可选)
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