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