先简单看下一些常用的基本标识符^匹配一个输入或一行的开头,/^a///匹配“一个A”,而不是“一个a”$匹配一个输入或一行/a$///的结尾匹配“Ana”,但不匹配“anA”*匹配前面的元字符0次或多次/ba*///匹配b,ba,baa,baaa,...+匹配前一个元字符1次或更多次/ba+///匹配ba,baa,baaa,...?匹配前一个元字符0或1次/ba?///匹配b,ba(x)//匹配x将x存储在名为$1...$9x|y的变量中//匹配x或y{n}//准确匹配n次{n,}//匹配n次以上{n,m}//匹配n-m次[xyz]//字符集,匹配这个集合中的任意字符(或元字符),匹配x,y,z[^xyz]//不匹配此集合中的任何字符正则表达式(RegularExpression)实际上是一个通过字符串模式匹配实现搜索和替换功能的工具。它起源于20世纪50年代科学家在数学领域所做的一些研究工作,后来被引入计算机领域。我们从它的名字就可以知道,它是一个用来描述规则的表达式。而且它的底层原理也很简单,就是利用状态机的思想来进行模式匹配。这里就不细说了,常用的方法属性,文档mdn都有,不要纠结,直入正题。Sub-expression子表达式(Reg)具有独立的匹配功能,将独立的匹配结果保存为一个独立的单元,可以使用*+?{n,m}/(ab)?c)///等量词进行匹配c或abc作为子模式可以独立处理,保留匹配结果的子串,可以通过RegExp访问$1,...$nvarre=/(\w+)\s(\w+)/;varstr="JohnSmith";varnewstr=str.replace(re,"$2,$1");console.log(newstr);//Smith和John下面的RegExp属性不是w3c标准,但是大部分浏览器都支持RegExp属性来描述$n的第n个子表达式只有1-9个$&最后匹配的字符串,RegExp.lastMatch别名$'最新匹配的右子串,RegExp.rightContextalias$`最新匹配的左子串,RegExp.leftContextAlias$+匹配的最后一个子串,RegExp.lastParenalias$_匹配成功的原始字符串,RegExp.inputalias对应参数变量名描述$n在replace函数中访问正则结果$n插入第n个子表达式匹配字符串,只有1-99$&插入匹配子串$'插入当前匹配子串右边的内容$`insert当前匹配子串$ text ";varr=/(<\/?\w+>).*\1/g;//等同于/(<\/?\w+>).*( )/g//加上(<\/?\w+>)匹配结果===( )匹配结果vara=s.match(r);//返回数组[" text "]子表达式高级模式非捕获模式,匹配结果不保留/(?:\w+)\s(\w+)///?:标识非捕获//$1是从第二个子表达式namedcapture计算出来的,这个用的比较少varre=/(?title
|
|
title
","
