如何使用正则表达式(RegEx)提取文本?

时间:2011-04-28 05:53:33

标签: javascript regex

我需要一些JavaScript中正则表达式的帮助。

我有以下字符串。

var str = "SOme TEXT #extract1$ Some more text #extract2$ much more text #extract3$ some junk";

我想将#$之间的所有文本提取到数组或对象中。

最终输出将是:

var result = [extract1,extract2,extract3]

extract1,extract2,extract3可以包含任何字符,例如_,@,&,*

3 个答案:

答案 0 :(得分:2)

正则表达式就像#(?<extract>[\s\S]*?)\$

命名组'提取'将包含您想要的值。

正如Alex所说,如果javascript不支持命名组,我们可以使用编号组。因此,修改后的正则表达式将为#([\s\S]*?)\$,所需的值将位于组号1中。

答案 1 :(得分:2)

您可以使用JavaScript正则表达式的exec方法。

var regex = /\#([^\$]+)\$/g,
    match_arr,
    result = [],
    str = "some #extract1$ more #extract2$ text #extract3$ some junk";
while ((match_arr = regex.exec(str)) != null)
{
   result.push(match_arr[1]);
}
console.log(result);

参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/exec

答案 2 :(得分:0)

var matches = str.match(/#(.+?)\$/gi);

jsFiddle