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

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

replace方法

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

返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

Demo:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>replace方法</title> </head> <body> <script type="text/javascript"> var str = "xxx"; console.log(str.replace('x','y'));//yxx console.log(str.replace(/x/,'y'));//yxx console.log(str.replace(/x/g,'y'));//yyy </script> </body> </html>

replace方法中特殊字符替换

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

Demo:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>replace中的特殊字符替换</title> </head> <body> <script type="text/javascript"> //用子表达式替换:$1和$2 //正则表达式中()就是一个子表达式,$1对应是第一个表达式的内容,即java,$2为script var str = "javascript"; console.log(str.replace(/(java)(script)/,'$2$1')); //输出:scriptjava //$& 为正则表达式匹配的字符串 //正则表达式通过直接量java来匹配,匹配结果为java,则 $&的值为java,然后用字符串$&-来替换匹配的字符串 var str1 = "javascript"; console.log(str1.replace(/java/,'$&-')); //输出:java-script var str2 = "javascript"; // $`为匹配子串ava的左侧文本,则为j console.log(str2.replace(/ava/,"$`")); //输出:jjscript // $'为匹配子串ava的右侧文本,则为script console.log(str2.replace(/ava/,"$'")); //输出:jscriptscript // $$为直接量符号,即插入一个$符号 console.log(str2.replace(/ava/,"$$"));//输出:j$script </script> </body> </html>

replace的参数replacement是函数

match 为匹配整个字符串,即:xyz45678%$&^
a1 为第一个子表达式,([^\d]*),匹配0个或多个非数字的字符,即:xyz
a2 为第二个子表达式,(\d*),匹配0个或多个的数字,即:45678
a3 为第三个子表达式,([^\w]*),匹配0个或匹配任何非单词字符。等价于 [^A-Za-z0-9_],即 %$&^
index为模式匹配出现的位置,从第一个字符已经匹配成功,则位置为0
string为字符串本身,即 xyz45678%$&^

Demo:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>replace的参数replacement是函数</title> </head> <body> <script type="text/javascript"> function replacer(match, a1, a2, a3, index, string) { return [a1, a2, a3].join(' ~ '); } var str = 'xyz45678%$&^'; var reg = /([^\d]*)(\d*)([^\w]*)/ var res = str.replace(reg, replacer); console.log(res);//xyz ~ 45678 ~ %$&^ </script> </body> </html>

split方法

split(‘字符串的分割正则','返回数组的最大成员数');返回分割后各部分组成的数组
Demo:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>split方法</title> </head> <body> <script type="text/javascript"> var str = 'a,b , c,d'; var res = str.split(",");//以逗号来分割字符串 console.log(res);//["a", "b ", " c", "d"] var str1 = 'a,b , c,,d'; var res1 = str1.split(/,*/);//以0或多个逗号来分割字符串 console.log(res1);//["a", "b", " ", " ", "c", "d"] var str2 = 'a, b,c, d'; var res2 = str2.split(/, */);//以0或对个逗号空格来分割字符串 console.log(res2);//["a", "b", "c", "d"] var str3 = 'a, b,c, d'; var res3 = str3.split(/, */,2);//以0或对个逗号空格来分割字符串,同时限制返回数组中最多有两项 console.log(res3);//["a", "b"] </script> </body> </html>

可以变换正则的匹配规则来分割字符串。

下面正则的匹配规则是以0或多个x来进行分割,如果加上括号则括号匹配的部分也就是分割规则也会作为数组成员返回。

Demo2:

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

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