正则表达式可以通过逻辑过滤获取字符串中特定的部分。
RegExp
创建方式:1. var reg=/ /;
2.var reg=new RegExp( ) 构造函数
当 var reg1=RegExp(reg)时,reg1为reg相同形式的不同引用。
当 var reg1=new RegExp(reg)时,两者指向不同地址,互相独立。
修饰符; i/g/m
其中m重点记述:m为多行匹配功能。例:
var reg=/^a/gm;
var str=“abcde\na”;
可以匹配两个a。
方括号[ ]:查找位于方括号范围内的字符
| 表示正则表达式中的或
元字符:(\w\W)样式可以代表全部
\w : 0-9 A-z _
\d: 查找数字
\s: 查找空白字符,\n \f \r \t \v (非视觉,真实存在的)
\b: 匹配单词边界
. : 除了换行和行结束符
补充:unicode编码:四位unicode编码和六位unicode编码
前两位代表层数,目前共16层unico编码。
量词:满足贪婪匹配原则。
n+*?:前方的字符乘量词,不先匹配。
区间:{X}{X, }{X,Y}
开头和结尾^ 和$
检验一个字符串首尾是否含有数字:
var reg=/^\d|\d$/
首尾皆含有数字:
var reg=/^ \ d[ \ s\ S] $/
对象方法:
reg.exec( )和reg.lastindex: 存在疑问
全局匹配下从第0位开始向后匹配,游标开始变化,lastindex可以改变游标位置。
反向引用:
\w(1)(1)➡aaa型内容
\w(1)\w(2)➡aabb型内容
replace方法:
var str=“aa”;
str.replace( a,b ); 结果为ba
利用正则表达式可以实现全局改变
var reg=/a/g;
var str=“aa”;
str.replace( reg,b ); ,结果为bb
将aabb型的变换成bbaa形式
var reg=/\w\1\w\2/g;
var str=“aabb”;
str.replace(reg. function($ $1 $2 ){
return $2+$2+$1+$1;
}));
将 the-first-name变为小驼峰式写法
var reg=/-(\w)/g;
var str=“the-first-name”;
str.replace(reg., function($ $1 ){
return $1.toUpperCase;
}));
补充:
正向预查:?=n 和?!n
取消贪婪匹配:加问号。
$有语法含义,想替换成的话先加一个。
?+等符号应加转义字符。
字符串去重:/(\w)\1*/g
替换为$1即可。
例题:将一个数字用科学计数法表示,每隔三位打一个点。
var str=100000000;
var reg=/(?=(\B)(\d{3})+$)/g;
str.replace(reg,.);