我想在()括号内提取文本。字符串如下所示:它在
中Some text: 5 (some numbers) + some more numbers
asdfkjhsd: 7 (6578) + 57842
djksbcuejk: 4 (421) + 354
我的javascript看起来像这样:
var fspno = document.getElementsByTagName("td")[142].innerText;
var allfsp = fspno.match();
我希望这个脚本收集数组括号内的所有数字。我用了
fspno.match(/\((.*?)\)/g);
但它带括号返回。我只想要括号内的文字。 任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
javascript中无法同时提取所有群组的所有匹配项,因此您必须在循环中使用exec
:
re = /\((.+?)\)/g
found = []
while(r = re.exec(fspno))
found.push(r[1])
或滥用String.replace
来收集比赛:
re = /\((.+?)\)/g
found = []
fspno.replace(re, function($0, $1) { found.push($1)})
但是,在您的特定情况下,可以重写表达式,使其不包含组,并且可以与String.match
一起使用:
re = /[^()]+(?=\))/g
found = fspno.match(re)
答案 1 :(得分:0)
/\((.*?)\)/.exec( '7 (6578) + 57842' )[1]
答案 2 :(得分:0)
最简单的方法是关闭g
选项并在匹配项上获取[1]
索引,例如:
fspno.match(/\((.*?)\)/)[1];
但如果找不到任何内容,那将返回错误,所以如果你不知道你是否会有一个带括号的部分,或者你可以使用这个成语:
(fspno.match(/\((.*?)\)/) || [,""])[1];
如果无法找到匹配项,将返回""
。
如果您知道需要g
选项(即括号中可能有多个内容,而您想要全部内容),则可以使用:
var match, matches=[]; while (match = /\((.*?)\)/g.exec(s)) matches.push(match[1]);
// matches is now an array of all your matches (without parentheses)
答案 3 :(得分:0)
您可能不需要g
选项。 fiddle here
或
var fspno = "7 (6578) + 57842";
var found = fspno.match(/\((.*?)\)/);
if (found) {
var found1 = found[1];
alert(found1);
}