正则表达式

203 阅读1分钟

正则表达式的学习

知识点

表达式; 元字符; 量词; reg.exec,reg.lastIndex;正向预查 var rag = /^a/表示以a开头 var rag = /[^a]/表示第一位是非a

遇到的问题

  1. 量词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";
  1. 检查字符串首尾是否都含有数字
var reg = /^\d[\s\S]*\d$/g;
var str = "1dnjdke123";

[\s\S]*表示的是去掉首尾的中间部分。任何一个区间出现零到多次

  1. 子表达式输出aabb
var str = "aabb";
var reg = /(\w)\1(\w)\2/;
console.log(reg.exec(str));

为什么不会贪婪匹配,因为(\w)表示的是子表达式

  1. 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
  1. the-first-name转换成theFirstName
var str =  the-first-name;
var reg = /-(\w)/g;
console.log(str.replace(reg,function($,$1){
    return $1.toUpperCase();
}));
  1. 将aaaaabbbbbcccc转成abc
var str = "aaaaabbbbbcccc";
var reg = /(\w)/1*/;
console.log(str.replace(reg,$1);
  1. 100000000转换成100.000.000
var str = "100000000";
var reg = /(?=(\B)(\d{3})+3$)/g;
console.log(str.replace(reg,"."))