1

内部の整数を取得しようとしている文字列があります。文字列は次のようになります。

"(2) This is a string"

私はそれをつかむ必要があり2ます。しかし、それは任意の数である可能性があるので、試しました:

 var str = "(2) this is a string";
 var patt = /\(\d\)/;

 var num = str.match(patt);

これは正しい答えを返しません。で分割する()必要がありますか、それともより良い正規表現がありますか?

4

4 に答える 4

3
var str = "(2) this is a string";
var patt = /\((\d)\)/;

var num = str.match(patt)[1];

2つのこと。一致した文字列からセグメントをキャプチャする場合は、そのこと()に注意してください。だから私は\dそれをキャプチャするために括弧で囲んだだけです。

次に、キャプチャされたセグメントにアクセスするには、返された配列にドリルダウンする必要があります。このmatchメソッドは、最初の項目が一致した文字列全体であり、2 番目の項目が一致したキャプチャ グループである配列を返します。したがって[1]、最初のキャプチャ グループ (配列の 2 番目の項目) を取得するために使用します。

于 2012-10-19T20:30:24.253 に答える
0
 var str = "(2) this is a string";
var a =  /\([\d]*\)/g.exec(str)[0];
 var num =  a.substring(1, a.length-1);
于 2012-10-19T20:38:25.953 に答える
0
var str = "(2) this is a string";
var patt = /\((\d+)\)/;
alert(str.match(patt)[1]);

これはうまくいきます!

なぜそれが機能するのか。(()) 騒乱の中には、マッチ配列の [1] 要素を取り込むキャプチャもあるためです。

于 2012-10-19T20:30:55.837 に答える
0

これを使って。括弧の数は関係ありません

var str = "(2) this is a string";
var patt = /\(\d\)/;

var num = str.match(patt)[0].replace("(", "").replace(")","")

これはうまくいくはずです

于 2012-10-19T20:34:06.780 に答える