正则表达式的学习
知识点
表达式; 元字符; 量词; reg.exec,reg.lastIndex;正向预查 var rag = /^a/表示以a开头 var rag = /[^a]/表示第一位是非a
遇到的问题
- 量词n+ 与n*,n? 的理解
var reg = /\w*/g;
var str = “qweer”;
控制台打印str.math(reg)的结果是["qweer", " "],表达式中“\w”就代表n,n*表示匹配0个到无数个。qweer表示匹配五个,后面没有可以匹配的字符所以匹配0个输出" "。
var reg = /\d*/g;
var str = “avd”;
控制台打印str.math(reg)的结果是[" ", " "," ", " "] \d字符表示的范围是0—9,没有与之匹配的,四次零次匹配,输出四个空格. n?匹配n的0个或1个字符 如果能够匹配的话存在贪婪匹配原则 2. 检验字符串首尾是否含有数字
var reg = /^\d|\d$/;
var str = "dnjdke123";
- 检查字符串首尾是否都含有数字
var reg = /^\d[\s\S]*\d$/g;
var str = "1dnjdke123";
[\s\S]*表示的是去掉首尾的中间部分。任何一个区间出现零到多次
- 子表达式输出aabb
var str = "aabb";
var reg = /(\w)\1(\w)\2/;
console.log(reg.exec(str));
为什么不会贪婪匹配,因为(\w)表示的是子表达式
- replace
var reg1= /aa/;
var reg2 = /aa/g;
var str = "aa";
console.log(str.replace("a","b")) //结果ba
console.log(str.replace(reg1,"b")) //结果ba
console.log(str.replace(reg2,"b")) //结果bb
- the-first-name转换成theFirstName
var str = the-first-name;
var reg = /-(\w)/g;
console.log(str.replace(reg,function($,$1){
return $1.toUpperCase();
}));
- 将aaaaabbbbbcccc转成abc
var str = "aaaaabbbbbcccc";
var reg = /(\w)/1*/;
console.log(str.replace(reg,$1);
- 100000000转换成100.000.000
var str = "100000000";
var reg = /(?=(\B)(\d{3})+3$)/g;
console.log(str.replace(reg,"."))