JavaScript学习05-正则表达式
test和exec方法
var re = /abc/g; var re2 = new RegExp("abc", "g"); /** * re.test(字符串) : 返回 true/false re.exec(字符串)) : 返回数组对象(多次调用,直接返回null) */ let bool = re.test("abc"); console.log(bool); let res = re2.exec("aaa-abc-abc-abb-abc-cc"); console.log(res); //res[0]匹配的子字符串 //index匹配的第一个字符串的位置 //input要匹配的字符串本身 //re加了g后执行一次返回一个结果,下次执行会继续从上次位置开始找 //i表示忽略大小写 //不加的话一直返回第一个匹配结果 console.log(res[0], res.index, res.input); //类似如下方法 // let arr = [1, 3, 5]; // arr.index = 3; // arr.input = "aa-bb-cc"; // console.log(arr);
正则公式
//$保证匹配的字符串在末尾 //^保证匹配的字符串在开头 //如果两个符号都加,只有abc能满足 abcabc不行 var re = /^abc$/gi; var str = "acabc"; console.log(re.test(str)); var re2 = /[xyz]bc/; //xbc ybc zbc var re3 = /[^xyz]bc/; //取反 除了x y z开头的都匹配 var re4 = /[1-7b-f]xy/; //5xy cxy // . 代表任何字符 除了换行 var re5 = /.xy/; // " xy" "11xy" // \d 0-9数字 \D 除了0-9 \s 空白字符 |S 除了空白字符 // \w 0-9a-zA-Z \W 除了0-9a-zA-Z var re6 = /\sa\s/; console.log(re6.test(" a ")); //量词 // {n} n个 // {n,} 至少n个 // {n, m} n至m个 // + 1个到多个 // * 0个到多个 // ? 0个或1个 var re7 = /[abc]{3}/; //acc console.log(re7.test("aaa")); var re8 = /^[abc]{3,}/; console.log(re8.test("aabc")); //贪图型,最长字符串匹配 var re9 = /x[abcy]*y/; //非贪图型 只要匹配立刻返回 // var re9 = /x[abcy]*?y/; var res = re9.exec("xabcyyy"); console.log(res);
分组和前瞻性
//分组 var re = /([abc]{3}\sxy){2,4}/; console.log(re.test("aaa xybbb xy abc xy")); //exec方法可以按组显示匹配的字符串 var re = /(A(B(C)))/; var res = re.exec("ABC"); console.log(res); var re = /\s([1-9]\d{4,11})@(qq|163)\.com\s/g; var str = ` 12311241@qq.com eaflhlaehflkahfe 213123@163.com asdajd asdadad 08392839@qq.com aeoaoefya 232eaf dsfsd `; var res; do { res = re.exec(str); console.log(res && res[0] + res[1] + "-" + res[2]); } while (res); //前瞻 x仅仅用来判断是否满足 返回结果时只返回abc var re = /(abc(?=x))/; //前瞻性取反 // var re = /(abc(?!x))/; console.log(re.exec("abcx"));
字符串中与正则相关操作
var s = 'guoyunhao'; s1 = s.substr(0, 3); console.log(s1); s2 = s.substring(0, 6); console.log(s2); //和正则表达式相关 s.search(); s.split(); s.replace(); s.match(); var str = ".aasd:asdda.asdf: asdas.aaaaaa:"; var re = /\.[a-z]+:/g; let res = str.match(re); console.log(res); let resStr = str.replace(re, function(res, group1, index, str) { console.log(res, group1, index); return group1; }); console.log(resStr);