正则表达式起航

匹配单个字符.

.号可以用来匹配任何的单字符(除换行符以外),包括点号本身,如:
var str="abc.md,abd.md";
var reg=new RegExp('ab.\.md','g'); 
var res=[];
res=str.match(reg);
--> ["abc.md", "abd.md"]  输出结果
上面的g表示全局匹配,也就是说返回所有的这个表达式匹配到的结果,否则只返回第一个匹配到的结果;然后\是正则表达式的一个元字符,表示转义,也就是说’\.‘表示后面的的就是真实的.不是正则表达式的元符号,不匹配任何东西。如果我们要匹配’\’的话就应该这样’\\’,前面加一个\就可以了。最后再次强调.只能匹配单个字符,但不包括空,如:
var str="ab";
var reg=new RegExp('ab.');
var res=[];
res=str.match(reg);
-->null  输出结果

匹配一组字符[]+^+-

[]是一个需想要匹配的单个字符的集合,比如说,在某个位子上我只想匹配a或者n,那我就可以这样写[an];那这样这个位置只会匹配a或者n,不匹配其他的,所以[]就是匹配这个字符集合中的任何一个字符即可。比如你想匹配0到9之间的数字,那就可以[0123456789]这样写,但是这样写会不会觉得太麻烦,所以’-‘就挺身而出了,[0123456789]可以写成[0-9],这里的-就是一个连接符,在[]里面-没有任何的作用,只有链接的作用,不匹配任何一个字符。效果如下:
var str="ab.xls,sb.xls,jb.xls,";
var reg=new RegExp('[sj]b.xls','g');
var res=[];
res=str.match(reg);
--> ["sb.xls", "jb.xls"]  输出结果(不匹配ab.xls);
还有这样的
var str="sbc.xls,sb1.xls,jb2.xls,";
var reg=new RegExp('[sj]b[0-9].xls','g');
var res=[];
res=str.match(reg);
--> ["sb1.xls", "jb2.xls"]  输出结果(不匹配sbc.xls);
现在该轮到^出场了,^是元字符,表示取非匹配,就是说不是这个的都匹配,[^0-9]表示这个位置不匹配0-9的数字。还可以连着写[^0-9^a-z^A-Z]表示不配数字,大小写字母。如:
var str="sbc.xls,sb1.xls,jb2.xls,sb!.xls";
var reg=new RegExp('[sj]b[^0-9^a-z^A-Z].xls','g');
var res=[];
res=str.match(reg);
--> ["sb!.xls"]  输出结果

各种元字符

空白元字符

  • [\b]:回退并删除一个字符(Backspace),\f:换页符 ,\n:换行符,\r:回车符,\t:制表符(Tab),\v:垂直制表符

数字和字母(非)匹配

  • \d:匹配数字,相当于[0-9], \D:匹配非数字的任意一字符,相当于[^0-9];
  • \w:任何一个字母数字字符(大小写均可)或下划线字符(等价于[a-zA-Z0-9_])
  • \W:任何一个非字母数字字符(大小写均可)或非下划线字符(等价于[^a-zA-Z0-9_])

(非)空白元字符匹配

  • \s:任何一个空白元字符(相当于[\r\f\t\n\v]);
  • \S:任何一个非空白元字符(^\r\t\v\n\f);