1

()括弧内のテキストを抽出したいと思います。文字列は次のようになります。

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);

しかし、角かっこで返されました。角かっこ内のテキストのみが必要です。どんな助けでもいただければ幸いです。ありがとう。

4

4 に答える 4

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)
于 2013-02-17T08:49:00.630 に答える
0
/\((.*?)\)/.exec( '7 (6578) + 57842' )[1]
于 2013-02-17T08:44:06.313 に答える
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)
于 2013-02-17T08:44:28.573 に答える
0

gオプションは必要ないかもしれません。ここをいじる

また

var fspno = "7 (6578) + 57842";
var found = fspno.match(/\((.*?)\)/);

if (found) {
    var found1 = found[1];
    alert(found1);
}
于 2013-02-17T08:47:31.297 に答える