正则表达式
在线工具
url:[http://regexper.com](http://regexper.com)
简单表示
循环:
?:表示0或1次出现
+:表示1~n次出现
*:表示0~n次出现
{n}:循环出现n次
{n,m}:循环出现n~m次
{n,}:循环至少n次
匹配:
.:匹配任意字符
分组:
():括号内的内容属于分组的内容
特殊转义:
\b:单词边界
\B:非单词边界
\d:数字
\D:非数字字符
\s:空白符
\S:非空白符
\w:单词字符
\W:非单词字符
* 一般变大写就是取反的意思
特殊字符:
[/-]:表示/或者-字符
^:表示开头,在表达式的中间,如[^abc]:表示不是abc的其它字符,表取反
$:表示结尾,或者是替换后的分组后的分组序号
-:范围类,a-z表示a到z的字符
?:{3,6}?加了?后,表示非贪婪模式,匹配到3个就停止一次匹配,默认是贪婪模式,会尽可能多的匹配字符串
|:分支(on|ca)
?: :(?:)表示忽略分组
前瞻:
正向前瞻:exp(?=assert)
负向前瞻:exp(?!assert)
* 匹配的只是见面的exp,后面是验证字符串的,不参与匹配替换
在JavaScript中的使用
字面量
声明:
var reg=/ \bis\b /(g);//写在两个/之间的是正则表达式,加了g后,表示全文匹配,否则是匹配一个而已
使用:
String.replace(reg,'IS');
构造函数:
声明:
var reg=new RegExp('\\bis\\b','gim');\适用于转义
参数:
g:global 全文搜索,不添加,搜索到第一个匹配为止
i:ignoreCase 忽略大小写,默认大小写敏感
m:multiline 多行搜索
方法:
reg.test('String');测试String是否与reg的正则匹配
测试后后改变lastIndex的值
reg.exe('String');使用正则表达式模式对字符串执行搜索,并加.将更新全局RegExp对象的属性以反映匹配结果。
没有就返回null,否则返回一个结果数组:
index:声明匹配文本的第一个字符的位置
input:存放被检索的字符串string,后续的字符串表示分组的匹配的结果信息
加了g:lastIndex就有作用,每次匹配后会更新lastIndex的信息,下次匹配就从lastIndex开始匹配,每次只是给出一次的结果,如果是要全文的信息,要利用循环得出结果。
String.search(reg|string);string会转换成正则表达式,成功返回index的下标,失败index是-1;g标志对表达式无效
String.match(reg):不加g和exec基本相同
加了g后,返回所有的匹配的字符串
String.splite(reg);返回分割后的数组
String.repalce(reg,'content'|function);
function(match,groupInfo,index,origin);
匹配信息,分组信息(根据分组的数量,会有多个参数),匹配下标,原文