0

私は次のコードを持っています:

var tickettext = "This is ticketid: 1111 here are some more text";
re = /ticketid: (\d*)/
found = tickettext.match(re);
alert(found);

必要なのは番号 1111 ですが、「ticketid: 1111,1111」というメッセージがポップアップ表示されます。

1111 を抽出する正しい方法は何ですか?

助けてください、事前に感謝します

4

3 に答える 3

3

コードは問題ありません。問題はalert.

一致が成功した場合、[ match] メソッドは配列を返し、正規表現オブジェクトのプロパティを更新します。返された配列には、最初の項目として一致したテキストがあり、次に、キャプチャされたテキストを含む、一致したキャプチャ括弧ごとに 1 つの項目があります。

したがって、配列の内部を確認する必要があります。

alert(found[1]);

ただし、一致がない場合は失敗します。その場合matchは が返されるためです。nullしたがって、デフォルト値も必要です。

alert((found || [])[1]);

問題を最初からすぐに明らかにするもう1つの提案:デバッグの代わりに使用します。console.log()alert()

于 2013-06-17T12:47:39.370 に答える
0

[M]atchは配列を返します。あなたがしたいfound[1]

于 2013-06-17T12:48:49.217 に答える
0

正規表現なし:

var tickettext = "This is ticketid: 1111 here are some more text",
    ticketid = tickettext.split(': ')[1].split(' ')[0];
于 2013-06-17T12:49:05.330 に答える