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

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

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

匹配字符串“form”,但带有外括号,则不匹配。

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

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

为什么 s[1] = 不管,s[2] = 不管,s[3]= \。

4

1 回答 1

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

第三组的捕获量是\. \.这样的\.

于 2013-08-13T03:13:04.580 回答