JS正则表达式进阶

贪婪量词   惰性量词    支配量词                      描述
-------------------------------------------------------------------------------------
  ?             ??             ?+                      能够出现0次或1次,但至多出现1次
  *             *?            *+                      能够出现任意次,也能够不出现
  +             +?            ++                      出现1次或屡次,但至少出现1次
  {n}        {n}?           {n}+                   必定出现n次
  {n,m}    {n,m}?       {n,m}+               至少出现n次,但至多不能超过m次
  {n,}       {n,}?          {n,}+                 能够出现任意次,但至少出现n次 正则表达式

 

JS不支持支配量词spa

分组:ip

在JavaScript和Java中,捕获性分组所匹配的内容都是以$1,$2,$3...的格式保存的!字符串

如:test

var now = "25/10/2009";
/(\d\d)\/(\d\d)\/(\d\d\d\d)/.test(now);
alert(RegExp.$3+"-"+RegExp.$2+"-"+RegExp.$1); //2009-10-25变量

1.子正则表达式 形式:/(子正则表达式)/引用

alert(/(\w)\w/.exec('helloword')); //he, h  第一个he是全匹配,第二个h是()里的子表达式匹配,因此()就是一个子表达式。也就是分组捕获内容。程序

分组捕获内容按左小括号计算,$1, $2...word

分组捕获内容能够在外部使用,也能够在正则表达式内部使用(有点象程序变量,这时候叫反向引用)字符集

外部使用:

var v = '1234 5678'.replace(/(\d{4}) (\d{4})/, "$2 $1");
alert(v); //5678 1234;

内部使用:

零宽断言
正则       名称       描述
(?=exp) 正向前瞻 匹配exp前面的位置
(?!exp) 负向前瞻 匹配后面不是exp的位置
(?<=exp) 正向后瞻 匹配exp后面的位置不支持
(?<!exp) 负向后瞻 匹配前面不是exp的位置不支持

正向前瞻用来检查接下来的出现的是否是某个特定的字符集。而负向前瞻则是检查接下来的不该该出现的特定字符串集。零宽断言是不会被捕获的。