正则表达式包括括号内的文本

时间:2014-03-24 23:09:10

标签: javascript regex replace

我想提醒括号内的文字。当我有方括号时,我可以这样做。

    a = "1[the]"
    words = a.match(/[^[\]]+(?=])/g);
    alert(words);

但我无法用圆括号()

来实现

我尝试了一些不同的东西,但我不太清楚我需要改变的地方。

    a = "1(the)"
    words = a.match(/(^[\])+(?=])/g);
    alert(words);

    a = "1(the)"
    words = a.match(/[^(\)]+(?=])/g);
    alert(words);

    a = "1(the)"
    words = a.match(/[^[\]]+(?=))/g);
    alert(words);

    a = "1(the)"
    words = a.match(/[^[\]]+(?=])/g);
    alert(words);

我哪里错了?

2 个答案:

答案 0 :(得分:1)

()需要被转义。它们具有特殊含义,因为它们用于“捕获”与它们之间的模式匹配的特定文本组。

编辑修复我解释问题的方式的问题。再试一次,这应该可行。

试试这个:

a = "1(the)"
words = a.match(/[^\(\)]+(?=\))/g);
alert(words);

答案 1 :(得分:1)

您当前的正则表达式在技术上不会在括号内查找单词。例如,如果字符串为"foobar)",则它将匹配“foobar”。

尝试类似:

a = "1(the) foo(bar)"
regexp = /\((.*?)\)/g

// loop through matches
match = regexp.exec(a)
while (match != null) {
    alert(match[1]) # match[1] is captured group 1
    match = regexp.exec(a)
}