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 zbcvar 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-Zvar re6 = /\sa\s/;console.log(re6.test(" a "));//量词// {n} n个// {n,} 至少n个// {n, m} n至m个// + 1个到多个// * 0个到多个// ? 0个或1个var re7 = /[abc]{3}/; //accconsole.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仅仅用来判断是否满足 返回结果时只返回abcvar 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);