RegExp对象
var patt = new RegExp('正则对象',修饰符);
或 var patt = /正则对象/修饰符;
注意:第一种方法中,正则对象中有 \ 的地方都应写成 \\ 进行转义
修饰符
i 不区分大小写搜索
g 全局搜索
gi 不区分大小写和全局的搜索
m 多行搜索
基本字符类型
1.原义文本字符
2.元字符(特殊字符)
\cX 与X对应的控制字符(Ctrl+X)
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\0 空字符
字符类[ ] 匹配中括号内的其中一个字符
字符类取反[^] 不匹配中括号内的任意字符
范围类
[a-z] //匹配所有的小写字母 [A-Z] //匹配所有的大写字母 [a-zA-Z] //匹配所有的字母 [0-9] //匹配所有的数字 [0-9\.\-] //匹配所有的数字,句号和减号 [ \f\r\t\n] //匹配所有的白字符
[^a-z] //除了小写字母以外的所有字符 [^\\\/\^] //除了(\)(/)(^)之外的所有字符 [^\"\'] //除了双引号(")和单引号(')之外的所有字符
预定义类
. 除了回车符和换行符之外的所有字符
\d 数字字符
\D 非数字字符
\s 空白符
\S 非空白符
\w 单词字符(字母、数字下划线)
\W 非单词字符
边界
$ 匹配输入字符串结尾的位置
^ 匹配输入字符串开始的位置
\b 单词边界
\B 非单词边界
量词
+ 出现一次或多次
* 出现零次或多次
? 出现零次或一次
{n} 出现n 次
{n,} 至少出现n 次
{n,m} 出现n到m次
{0,n} 至多出现n 次
贪婪模式
尽可能匹配多的次数
非贪婪模式:量词 + ?
尽可能匹配少的次数
分组( )
忽略分组(?: )
或|
反向引用
如,var patt = /(\d{4})-(\d{2})-(\d{2})/g;
'2015-06-29'.replace(patt,'$3/$2/$1');
前瞻
正则表达式从左向右开始解析,文本尾部方向,称为‘前’
前瞻就是在正则表达式匹配到规则的时候,向前检查是否为断言
符合特定断言称为正向匹配(肯定匹配),不符合特定断言称为负向匹配(否定匹配)
如,/\w(?=\d)/g 正向前瞻
/\w(?!\d)/g 负向前瞻
对象属性
正则表达式.test('字符串')
搜索字符串指定的值,根据结果并返回布尔值true或false
正则表达式.exec('字符串')
检索字符串中的指定值并返回找到的值,如没有,则返回 null。
字符串.search('子字符串'/正则表达式)
返回字符串所处位置的index值
如没有找到任何匹配的子串,则返回 -1
忽略g
字符串.match(正则表达式)
全局调用
执行全局检索,找到所有匹配子字符串
非全局调用
只执行一次匹配
字符串.split('子字符串'/正则表达式)
把一个字符串分割成字符串数组
如果把空字符串 ("") 用作分隔符,那么每个字符之间都会被分割
string.replace(string,replaceString)
string.replace(Regexp,replaceString)
string.replace(Regexp,function(match,group,index,origin){})
function的四个参数
匹配字符串,正则表达式分组内容,匹配项在字符串中的下标,原字符串
全局时,替换所有匹配的子串;非全局时,只替换第一个匹配子串