[英]Regular Expression match in javascript
我有字符串SUM([A2:A10],[B2:B10],[C2:C10],[D2:D10])
並且我需要獲取元素[A2:A10],[B2:B10],[C2:C10],[D2:D10]
在一個數組中,所以我在js中使用了match()
。 代碼片段是
var formula = "SUM([A2:A10],[B2:B10],[C2:C10],[D2:D10])";
var reg = /\[(a-zA-Z0-9)+\]/;
matches = formula.match(reg);
但我沒有得到比賽。 我希望正則表達式是錯誤的。 我在構建正則表達式方面很差。 什么是正確的正則表達式?
像這樣嘗試:
var formula = 'SUM([A2:A10],[B2:B10],[C2:C10],[D2:D10])';
var reg = /\[\w+:\w+\]/g;
matches = formula.match(reg);
輸出:
["[A2:A10]", "[B2:B10]", "[C2:C10]", "[D2:D10]"]
您的正則表達式方向正確,但不包括冒號和捕獲的單個字符。 我使用的\\w
轉義序列是單詞字符( [a-zA-Z0-9_]
)的快捷方式,使其更具可讀性。 g
標志是獲取所有匹配項所必需的,而不僅僅是第一個匹配項。
var formula = "SUM([A2:A10],[B2:B10],[C2:C10],[D2:D10])";
var reg = /\[.*?\]/g;
matches = formula.match(reg);
var str = "SUM([A2:A10],[B2:B10],[C2:C10],[D2:D10])";
var matches = str.match(/\[[A-Z0-9:]+\]/g);
alert(matches);
請注意,您使用正則表達式上的g
標志來獲取所有匹配項。
你可以在這里看到它的工作: http : //jsfiddle.net/jfriend00/aTrLU/
您需要的正則表達式是
/\[[A-Z][0-9]+:[A-Z][0-9]+\]/gi
g 修飾符表示我們應該進行全局匹配並返回所有結果,而不僅僅是第一個
i 修飾符表示我們需要不區分大小寫的匹配
所做的假設是您不想包含 [E2:E10:],因為有額外的分號
您的正則表達式不包括冒號:
。
試試這個: /\\[([0-9A-Z:]+)\\]/
,特別是為什么我在那里引用和未引用的方括號。
另外,您的輸入字符串沒有被引用。
我相信你忘記了引號。 此外,您還需要全局標志。 這里的代碼:
var formula = "SUM([A2:A10],[B2:B10],[C2:C10],[D2:D10])";
var reg = /\[[0-z]+:[0-z]+\]/g;
var matches = formula.match(reg);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.