0

http://www.gskinner.com/RegExr/にあるオンライン正規表現テスターと比較して、この正規表現がjavascriptでまったく異なる結果を返すのはなぜですか。

var patt = new RegExp(/\D([0-9]*)/g);
"/144444455".match(patt);

コンソールでの戻り値は次のとおりです。

["/144444455"]

正規表現テスターで正しいグループを返しますが。

私がやろうとしているのは、テキスト内の最初の量を抽出することだけです。そのテキストが「/」で始まるか、他の役に立たない情報がたくさんあるかどうかは関係ありません。

4

1 に答える 1

3

正規表現は、あなたが指示したとおりに実行します。

  • \D非数字に一致します(この場合/
  • [0-9]*数字の文字列に一致します(144444455

最初のキャプチャグループのコンテンツにアクセスする必要があります。

var match = patt.exec(subject);
if (match != null) {
    result = match[1];
}

または、単に\D完全に削除します-そもそもなぜそれが必要だと思うのかわかりません...

/g次に、テキスト内のすべての数字ではなく、最初の数字のみを一致させたい場合は、修飾子を削除する必要があります。それで、

result = subject.match(/\d+/);

同様に機能するはずです。

于 2012-09-20T14:45:09.073 に答える