我想提醒括号内的文字。当我有方括号时,我可以这样做。
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);
我哪里错了?
答案 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)
}