js正则表达式学习和总结(必看篇)(2)

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>test方法</title> </head> <body> <script type="text/javascript"> var reg = /abc/g; var str = "123abc456abc"; console.log(reg.lastIndex);//0 console.log(reg.test(str));//true console.log(reg.lastIndex);//6 console.log(reg.test(str));//true console.log(reg.lastIndex);//12 console.log(reg.test(str));//false </script> </body> </html>

Demo2:

如果正则表达式是一个空字符串,则会匹配所有的字符串,但需要使用new RegExp()方式

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>test方法</title> </head> <body> <script type="text/javascript"> console.log(new RegExp('').test('abc'));//true console.log(/''/.test('abc'));//false console.log(/''/.test("''"));//true </script> </body> </html>

 exec方法

exec() 方法用于检索字符串中的正则表达式的匹配。

返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

Demo1:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>exec方法</title> </head> <body> <script type="text/javascript"> var str = "xyz"; var reg1 = /x/; var reg2 = /a/; var res1 = reg1.exec(str); var res2 = reg2.exec(str); console.log(res1);//["x", index: 0, input: "xyz"] console.log(res2);//null </script> </body> </html>

Demo2:

如果正则表达式包含圆括号,则返回的数组会包括多个元素。首先是整个匹配成功的结果,后面是圆括号里匹配成功的结果,如果有多个圆括号,他们的匹配成功的结果都会成为数组元素

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>exec方法2</title> </head> <body> <script type="text/javascript"> var str = 'abcdabc'; var reg = /(a)b(c)/; var res = reg.exec(str); console.log(res);//["abc", "a", "c", index: 0, input: "abcdabc"] </script> </body> </html>

对于调用exec方法后返回的数组具有以下两个属性:

input 整个原待匹配的字符串
index 整个模式匹配成功的开始位置
支持正则表达式的 String 对象的方法

search方法

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

返回值: stringObject 中第一个与 regexp 相匹配的子串的起始位置。

注释:如果没有找到任何匹配的子串,则返回 -1。

search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

Demo:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>search方法</title> </head> <body> <script type="text/javascript"> var str = "abcdcef"; console.log(str.search(/c/g));//2 </script> </body> </html>

match方法

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

字符串对象的match方法与正则对象的exec方法比较类似:

但是如果正则表达式带有g修饰符,那么match方法与exec方法就有差别了:

可以看到match返回了所有成功匹配的结果,但是exec方法只返回了一个。
Demo:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjssww.html