一.创建:
直接量创建: var a=/s$/;
RegExp构造函数创建:var a= new RegExp("s$");
二.字符:
直接量字符:字母数字
转义字符:\o(NUL字符)、\t(制表符)、\n(换行符)、\v(垂直制表)、\f(换页符)、\r(回车符)
特殊含义标点符:^ $ . * + ? = ! : | \ / () {} []
三.字符类:
[...]
[^...]
· 除换行符和其他Unicode的行终止符之外的任意字符
\w
\W
\s
\S
\d
\D
[\b]退格直接量
四.重复字符语法
{n,m}
{n,}
{n}
?
+
*
非贪婪匹配:+、?、*后面加?,尽可能少的匹配,但正则的模式匹配总是试图寻找第一个匹配的位置
五.选择、分组、引用
1./ab|ac|ef/,匹配次序从左到右,发现匹配项就忽略右边
2.圆括号作用:
a.把单独的项组合成子表达式,以便使用|、+、?、*,/(cd|ef)?|ab/
b.在完整的模式中定义子模式
c.在同一正则表达式的后部引用前面的自表达式的文本,/['"][^'"]\1/,正则中不允许双引号括起来的内容有单引号,反之亦然。\1表示['"]中匹配到的'或"文本,数字是从左到右左括号的出现引索
3.(?:),仅分组,不参与引用
六.修饰符
i:不区分大小写的匹配
g:全局匹配
m:多行匹配
七:锚字符
^、$、\b、\B、(?=p)、(?!p)
八.用于模式匹配的String方法
.search(/script/i)
.replace(),第一个参数是正则/字符串,第二个参数是取代模式的字符串。正则表达式会记住每个匹配的子串的文本,通过其左括号的索引引用,在replace函数中,则通过在字符串添加'$num'引用,num是子串的索引。replace的第二个参数可以是函数,用以动态计算替换字符串。
.match(),唯一参数是正则,返回匹配的字符串数组。设置g,结果数组是所有匹配。没有设置g,a[0]是第一个匹配字符串,a[n]是第n个匹配子表达式
.split(),传入一个字符串或正则作为分隔符,将对象拆分为字符串数组。
九.RegExp
var a=new RegExp("\\d{5}","g");第一个参数是正则直接量,第二个参数是可选修饰符, 字符串表示的正则"\"要改成"\\"。
5个属性:source、ignoreCase、global、multiline、lastIndex
.exec(传入字符串),没有找到匹配则返回null,结果是数组,同String的match方法.属性index--发生匹配的字符串位置,属性input引用正在检测的字符串
.test(传入字符串),如果传入字符串包含一个匹配结果,返回true