w [0-9A-z_] W [^w] d [0-9] D [^d] s [ vf] S [^s] 单词边界 B 非单词边界 . [^ ]
量词 正则是贪婪的
n+ {1,infinity} n* {0,infinity} n? {0,1} n{x} {x} x个 n{x,y} {x,y} x-y个 n{x,} {x,infinity}
位置
^n
n$
方法
reg.test();
str.match();
var reg = /w*/g; var str = "abc"; str.match(reg) //["abc",""] var reg = /^abc$/g; //以当前abc开头,并以当前abc结尾 var str = "abcabc"; str.match(reg) //null //检验一个字符串首尾是否含有数字 var reg = /^d|d$/g; //首或尾有数字 var reg = /^d[sS]*d$/g; //首尾都有数字
//前提是reg要加g否则值不变 reg.lastIndex //返回位置 reg.exec() //返回的数组里包括位置 reg.lastIndex=0 //更改位置 var str = "aaaa"; var reg = /(w)111/g; //["aaaa"] var str = "aabb"; var reg = /(w)1(w)2/g;//["aabb"] console.log(reg.exec(str));//["aabb","a","b"] console.log(str.match(reg));//reg不加g["aabb","a","b"] console.log(str.match(reg));//reg加g["aabb"] var str = "ebdaabbbbcc"; console.log(str.search(reg));//[3] 返回匹配到的位置,失败返回-1 var str = "ebda2abbbbc3c"; var reg = /d/g; //按重复的字母拆分数组 console.log(str.split(reg));//返回拆分后的数组
var str = "aa"; console.log(str.replace("a","b")) //"ba" var reg = /a/g; str.replace(reg,"b"); //bb //aabb var reg = /(w)1(w)2/g; var str = "aabb"; str.replace(reg,"$2$2$1$1") //bbaa str.replace(reg,function($,$1,$2){ return $2+$2+$1+$1; //bbaa; }) var str = "the-first-name"; //theFirstName var reg = /-(w)/g; str.replace(reg,function($,$1){ return $1.toUpperCase(); })
正向预查 var str = "abaaaaa" //查后面有b的a; var reg = /a(?=b)/g; var reg = /a(?!b)/g; //["a","a","a","a","a"] str.match(reg); //a 非贪婪匹配 var str = "aaaaaa"; var reg = /a+/g; //["aaaaaa"] var reg = /a+?/g; //["a","a","a","a","a","a"] 练习 字符串去重 var str = "aaaaaaabbbbbbbcccccc"; var reg = /(w)1*/g; str.replace(reg,"$1") 数字科学计数法 var str = "100000000"; var reg = /(?=(B)(d{3})+$)/g; console.log(str.replace(reg,"."));//100.000.000