正则表达式建立
字面量建立,a = /abc/gim;
构造函数建立,a = new RegExp('abc','gim')
正则表达式中的特殊字符,
[...] 方括号中的任意字符
[^...] 非方括号中的任意字符
s 空白字符
S 非空白字符
d 数字
D 非数字
w 字母和数字,至关于[a-zA-Z0-9]
W 非字母和数字
重复
{m,n} 介于m到n次之间
{m} 刚好等于m次
{m,} 大于等于m次
? 0次或者1次
* 0次或者n次
+ 1次或者n次
贪婪的匹配
重复的一种,贪婪的匹配即普通的书写方式,尽量多的匹配;非贪婪的匹配就是尽量少的匹配,在重复的表示符号后面加上?,例如/a?/,字符串为aaaa,将会匹配第一个a。须要注意的是,/a?b/来匹配aaaab获得的匹配结果是aaaab,而不是ab。
选择
选择经过‘|’来实现,用于分隔供选择的字符。匹配的次序是从左到右,若是左边已经匹配了,就不考虑右边的匹配项了。固然,而后是全局匹配的话能够找出全部的匹配项。
分组
小括号功能较多有三种功能,
1.做用一,把单独的项组合成子表达式。将一段字符串组成子表达式,例如/java(script)?/就能够用来匹配Java以及JavaScript。
2.做用二,定义子模式,在调用exec方法的时候,返回值的数组第二项开始就是子模式的匹配结果了。
3.做用三,容许后面引用前面的表达式。例如,1引用的是第一个圆括号对应的表达式,2引用的是第二个圆括号对应的表达式。例如要匹配字符串中的子字符串,子字符串的引号应该相同,同为单引号或者同为双引号。在不借助引用的状况下只能这么写,/["']S["']/。这样作不到同为单引号或者双引号,能够改成/["']11/java
指明位置
^x 以x为开始
x$ 以x结束
/bjava/ 匹配Java
/Bjava/ 匹配ajava,不匹配Java,由于B表示单词不在这里断
(?=p) 零宽正向断言,后面必须有p,可是不匹配p;这里说的不匹配p意思是经过match函数的返回数组中不包含p,即这里的p只是做为一个条件。例如 /java(?=:)/,它不匹配JavaScript,匹配JavaScript:。
(?!p) 零宽负向断言,后面必须没有p,同时不匹配p。例如/java(?!:)/,它匹配JavaScript,它不匹配JavaScript:。
修饰符
i 忽略大小写
g 全局屡次匹配
m 多行匹配
写法实例:/[abc]/gim能够匹配a、b、c、A、B、C。若是字符串有多个,全部的匹配项均可以匹配出来。
/abc$/g,这个表达式至多能匹配出一个匹配项
/abc$/gm,这个表达式能够匹配出多个匹配项,将每次换行都看做是一次结束正则表达式
正则表达式的方法
这里说的方法,即包括字符串和正则表达式相关的方法,也包括正则表达式自身的方法
字符串的四个方法,
String.search() 查找第一个匹配项的索引
Sring.replace() 第一个参数是正则表达式,若是正则表达式是全局那么将替换掉全部的匹配项
String.match() 获得全部的放回项数组。若是这时的正则表达式是一个非全局的,那么和正则表达式exec()方法拿到的结果相同。
String.split(),也能够接受一个正则表达式做为参数。数组
regexp有两个方法,分别是exec和test。exec的返回值是一个数组,test的方式值时一个布尔类型。函数