簡體   English   中英

javascript中的正則表達式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM