var td = /^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/
var b = td.exec("test");
alert(b);
结果是 ....test,,,test 或者你可以说一个长度为 4 的数组,数组的第一个和最后一个元素是字符串本身,但中间两个元素是空的。
最佳答案
您的正则表达式 /^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/
表示:
/ : regex delimiter
^ : start of string
(?: : start NON capture group
( : start capture group 1
\w+ : 1 or more letter, digit or _
) : end group 1
\. : a dot
)? : end non capture group, optional
(?: : start NON capture group
( : start capture group 2
\w+ : 1 or more letter, digit or _
) : end group 2
: : column
)? : end non capture group, optional
( : start capture group 3
\w+ : 1 or more letter, digit or _
) : end group 3
$ : end of string
/ : regex delimiter
您可以看到您有 3 个捕获组。
对于test
这个词,第一组是空的,因为test
后面没有点;第二组也是空的,因为在 test
之后没有 :
;只有第三组包含 test
。
var b = td.exec("test");
的结果是一个数组,其中第一个元素 b[0]
你会找到整个匹配(即test
),则b[1]
和b[2]
分别包含空的第一组和第二组; b[3]
包含第三组,即 test
。
这就是为什么你的结果数组是
['test', '', '', 'test']
| | | third group
| | second group
| first group
whole match
关于javascript - 有人可以解释以下 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578601/