理解正则表达式

时间:2013-08-13 02:38:08

标签: javascript regex

^((\w+)|(\\.))+$/   

表示字符序列或反斜杠序列后跟任何字符的匹配。 但为什么它不能将“form:update”与“form”匹配

    var pattern = /^(\w+)|(\\.)$/;
    var s=pattern.exec("form:update"); 
    alert(s);

匹配字符串“form”, 但是对于外括号,它没有。

并且两个内括号用于captrue?外面的也? 这个例子我得到了一些小事。

    var pattern = /^((\w+)|(\\.))+$/;
    var s=pattern.exec("form\\.update\\.whatever"); 

为什么s [1] =无论如何,s [2] =无论如何,s [3] = \。

1 个答案:

答案 0 :(得分:2)

它说

从字符串的开头,匹配一个单词序列,如果遇到反斜杠,匹配它并匹配后面的一个字符(不关心什么),然后尝试匹配另一个单词序列,并循环直到字符串的结尾。

var pattern = /^((\w+)|(\\.))+$/;
var s = pattern.exec("form\\.update\\.whatever");

匹配顺序为form \. update \. whatever

请注意\\表示javascript正则表达式和字符串中的\.仅表示正则表达式中的一个“任何字符”。

如果您将.替换为任何可用的字符,请说明

var pattern = /^((\w+)|(\\.))+$/;
var s = pattern.exec("form\\5update\\4whatever");

匹配顺序为form \5 update \4 whatever

  

为什么s [1] =无论如何,s [2] =无论如何,s [3] =。

这是因为javascript只保留表单(...)+

的最后一次捕获

第一组的捕获是form \. update \. whatever,因此您获得whatever

第二组的抓取次数为form update whatever,因此您获得whatever

第三组的抓取次数为\. \.,因此您获得\.