質問: input.match(/.*\d{5}/); > console.log(match) > > //実行結果 > [ > 'Address: 333 Main St., Anywhere, NY, 55532', > index: 0, > input: 'Address: 333 Main St., Anywhere, NY, 55532. Phone: 555-555-2525.', > groups: undefined > ] > > ``` > > 本では5桁の郵便番号をひとつ探していて、その他のものは何も必要がないとします。 > > > と直前に書かれていたので イメージでは`55532`が出力されると思っていたのですが全然違う物が出力されて困っています。 助けて頂けないでしょうか? 引用元 1)Ethan Brown. Learning JavaScript, 3rd Edition. O'Reilly. イーサン ブラウン ムシャ ヒロユキ ムシャ ルミ (訳) 2017. 「17章 正規表現」.『初めてのJavascript』. 第3版. オライリージャパン. pp 290.
回答: その書籍のことは知らないですが、この正規表現を可視化してくれるサイトによると、 regexper.com 該当の正規表現を入力すると以下の図が表示されます。 !正規表現画像 つまり任意の文字の任意の繰り返しの後、数字が5桁並んだところを終端とする文字列を指定していることになります。 そのため、数字が5桁並んだところの **「「行の頭から」5桁並んだ数字まで」** がmatchしたことになって、質問の結果になったものと思われます。 @cubick さんの回答のように、5桁並んだ数字だけが必要なら`\d{5}`だけで良いはずです。