作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择
创建方法
一 var reg=/abc/; 正则表达式的表示方法 //中间放东西
var str="abcd";
reg.test(str) .test是一种方法,用来测试str里有没有reg中的片段
二 var reg=new RegExp("abs","放属性")
var reg=/abc/;
var reg1=new RegExp(reg); 表示复制过来,两个长的一样的正则表达式
特殊情况
var reg1= RegExp(reg); 表示的是引用,两个指的是同一地址
三个属性
var reg=/abc/i; 忽视大小写
var reg=/abc/g; 全局匹配 str.match(reg);
表示再str中找reg一样的
/^a/表示找开头的a
var reg=/abc/m; 执行多行匹配
实例 var reg=/^a/gm;
var str="abcde\na"; 此时可以匹配出两个a,如果没有m属性,则只能匹配出一个a
reg.test();判断,返回结果没true或者false
str.match();匹配出来反馈出来
表达式
var reg=/[012345][12345][12367]/g;
[0-9A-z]范围在0-9,a-z,A-Z
表示在字符串中找[]范围里的
^放到表达式里外是不一样的
[^A]表示非A
var reg=/(abc|bcd)/g; 表示要匹配abc或者bcd
元字符
. 相当于[^\r\n] 非换行和行结束符
\w 相当于[0-9A-z]
\W 相当于[^\w] 正好相反
\d相当于[0-9]
\D相当于[^\d]
\s 空白字符 相当于[\t\n\r\v\f]加上空格
\S相当于[^\s]
\n换行符
\f换页符
\r回车符
\t制表符
\v垂直制表符
\b单词边界
\B非单词边界
\u unicode编码==asc编码
第一层到第十六(十六进制,因此10表示16)层unicode编码(常用第一层,因此可省01)
\u010000 -- \u01ffff
\u020000 -- \u02ffff
\u100000 -- \u10ffff
正向预查 (?=n) 找后面紧跟n的字符,n不获取出来,只负责预查
非正向预查 (?!n)
reg.exec(); 随游标移动进行匹配
reg.lastIndex 表示游标的位置
如果没有属性g,lastIndex一直为0
加上g,lastIndex才当游标用
var str="aa";
str.replace("a","b"); 表示把a换成b 不过只换一个,变成ba
解决方法
var reg=/a/g;
var str="aa";
str.replace(reg,"b");
把AABB倒过来,变成BBAA
var reg=/(\w)\1(\w)\2/g;
var str="aabb";
str.replace(reg,"$2$2$1$1");
或者
str.toUpperCase()变成大写,字符串
str.toLowerCase()变成小写
变小驼峰式写法
变成科学计数法
子表达式
找出AABB型
var reg=/(\w)\1(\w)\2/g;
var reg=/(a)\1/g;
第一个()为第一个子表达式, \1表示反向引用第一个子表达式里的内容
var reg=/(\w)\1\1\1\1/g; 三次引用第一个子表达式里的内容
贪婪匹配和非贪婪匹配
var str="aaaaa";
var reg=/a+/g; 此时会匹配出aaaaa,此为贪婪匹配
在任何量词后面加?则变成非贪婪匹配
var str="aaaaa";
var reg=/a{1,3}?/g ; 能匹配一个则不会匹配三个
var str="aaaaa";
var reg=/a??/g ; 第一个?代表量词(0-1),第二个?表示取消贪婪匹配,取零个
var str="aaaaa";
var reg=/a*?/g ; 表示取零个