繁体   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