0
我在JavaScript以下正则表达式匹配类似于book[n]
,book[1,2,3,4,5,...,n]
,book[author="Kristian"]
和book[id=n]
(n是任意数):的Javascript正则表达式,确定哪些组上匹配
var opRegex = /\[[0-9]+\]|\[[0-9]+,.*\]|\[[a-zA-Z]+="*.+"*\]/gi;
我可以在使用此通过以下方式:
// If there is no match in any of the groups hasOp will be null
hasOp = opRegex.exec('books[0]');
/*
Result: ["[0]", index: 5, input: "books[0]"]
*/
如上图所示我不仅得到了价值,而且在[和]。我可以通过使用组来避免这种情况。所以我改变了正则表达式:
var opRegex = /\[([0-9]+)\]|\[([0-9]+,.*)\]|\[([a-zA-Z]+=".+")\]/gi;
运行一样的结果上面将改为:
["[0]", "0", undefined, undefined, index: 5, input: "books[0]"]
在上面,我得到了集团作为数组索引1,2和3。对于这个例子,匹配是在第一个,但如果匹配在第二个正则表达式组中,匹配将在索引2或数组中。
我可以更改我的第一个正则表达式来获取没有括号的值吗?还是使用分组方法和while循环来获取第一个定义的值?
还有什么我失踪了?它是否贪婪?
让我知道你是否需要更多的信息,我很乐意提供。
很好用!你能否解释一下“轮换之外......每场替补赛”。我没有完全明白。 – Asken 2013-04-09 19:11:39
基本上,您需要分组外的括号(parens),因此它们不是匹配组的组成部分。你在第二个正则表达式中这样做了,但是你有三个独立的分组,而不是一个主分组。在解决方案中,只有一组parens,所以只有一组。 – 2013-04-09 19:23:39