nodejs正则表达式 - 需要帮助来理解代码
问题描述:
你能解释一下这段代码的功能吗(来自Blair Mitchelmore jquery.query-2.1.6.js)?nodejs正则表达式 - 需要帮助来理解代码
var parse = function(path) {
var m, rx = /\[([^[]*)\]/g, match = /^([^[]+?)(\[.*\])?$/.exec(path), base = match[1], tokens = [];
while (m = rx.exec(match[2])) tokens.push(m[1]);
return [base, tokens];
};
我刚刚开始学习nodejs正则表达式,并且我想确保我理解上面的代码。
感谢, 李
答
var m, rx = /\[([^[]*)\]/g,
变量被声明,正则表达式被定义并作为第二个变量存储。
match = /^([^[]+?)(\[.*\])?$/.exec(path),
变量声明块内尽管如此,此正则表达式得到上该函数的参数执行:
-
/^
正则表达式定界符,启动的串 -
([^[]+?)
匹配的至少一个字符,少尽可能不匹配任何开放方括号。抓获。 -
(\[.*\])?
匹配一个开放的方括号,任何东西,然后一个结束方括号。与括号一起被捕获。 -
$/
字符串结尾,正则表达式分隔符。
这个正则表达式将用两个参数分隔path
。第一个方括号之前的任何内容,以及任何方括号内的任何内容(强制性)。
base = match[1], tokens = [];
这将在假设正则表达式匹配时调用第一个匹配“base”,并且它将创建一个名为“tokens”的空数组。
while (m = rx.exec(match[2]))
tokens.push(m[1]);
这将重复匹配方括号中的第一个定义的正则表达式,并根据捕获的值构建一个数组。正则表达式匹配:
-
\[
的开口方括号, -
([^[]*)
其他任何不包括开口括号(捕获), -
\]
和右方括号
此时,假设path
变元格式良好,base
保留path
和tokens
中的方括号前的部分, e方括号中的内容。
return [base, tokens];
返回表示两个变量的两个元素的数组(我不会在这里判断的编码风格,让我们只说我喜欢的对象)
答
你一定很好奇什么实际的代码做或者什么的正则表达式吗?
的代码是很基本的,但这里有可能匹配的解释为您的正则表达式:
/\[([^[]*)\]/g
- >http://regex101.com/r/uP0hR6
/^([^[]+?)(\[.*\])?$/
- >http://regex101.com/r/wG3aG4
我希望这有助于!
在这一点上什么是你最好的猜测? –
不知道,仍然试图找出匹配正则表达式中的第一个(...)。我看不出为什么支架不平衡... – user429400