正则表达式(RegExp)
1.作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择
2.两种创建方式
- 直接量
var reg = /abc/属性;
- new RegExp();
var reg = new RegExp(“abc”,“属性”);
3.属性:
i:忽视大小写
g:全局匹配
m:多行匹配
4.方法
reg.test(); //找在str中有没有相同片段,返回true , false
reg.exec(); //搜索字符串,未找到则为null,在g下游标会移动,确定位置,lastIndex可以改变游标
str.match(); //找在str中相同片段,并返回片段
var reg = /abc/i;
var str = "Abcdef";
5.表达式 [ ]
- 一个表达式是一位,里面填写的是区间
var reg = /[0-9][0123456789][0123456789]/g;
var str = "231sdf43465hgghgf"
str.match(reg); //""231","434""
6.元字符
\w == [0-9A-z]
\d == [0-9] 查找数字
\s == [\t\n\r\v\f ] 查找空白字符
\b == [单词边界]
\uxxxx :十六进制规定的unicode字符
. == [^\n\r] (不是\n\r)
7.量词
n+ :匹配任何包含至少一个n的字符串 {1, }
n* :匹配任何包含零个或多个n的字符串 {0, }
n? : 匹配任何包含零个或一个n的字符串 {0,1}
n{x,y} :{x, y}
^n :开头
n$ :结尾
例题
检验一个字符首尾是否含有数字(首或尾)
var reg = /^\d|\d$/g;
8.replace()
反转
var reg = /(\w)\1(\w)\2/g;//子表达式1(\w),2(\w)
var str = "aabb";
console.log(str.replace(reg,"$2$2$1$1"));//$获取子表达式的内容
替换
var reg = /-(\w)/g;
var str = "the-first-name";
console.log(str.replace(reg,function($,$1){ //第一个参数是全局的,第二个是第一子表达式,依次类推
return $1.tuUpperCase();
}));
字符串去重
var str = "aaaaaaabbbbbccccc";
var reg = /(\w)\1*/g;
console.log(str.replace(reg,"$1"));
科学计数法
var str = "10000000000";
var reg = /((?=(\B)\d{3})+$)/g;
console.log(str.replace(reg,"."));//10.000.000.000