我在 javascript 中有以下正则表达式,用于匹配类似于book[n]
、book[1,2,3,4,5,...,n]
和(n 是任意数字):book[author="Kristian"]
book[id=n]
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 循环来获取第一个定义的值?
还有什么我想念的吗?是贪心吗?
如果您需要更多信息,请告诉我,我很乐意提供。