質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

3348閲覧

URLから数字が5個続く部分を正規表現で抽出したい(javaScript)

sixth13

総合スコア33

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2017/10/27 00:55

編集2017/10/27 01:05

html5でマークアップしているものです。

javaScriptの正規表現にてURL(例:example.com/12345/12/1234/)から
数字が5連続で続いた部分だけ抽出したいのですがどのように正規表現をかけばよろしいのでしょうか。

またその際に抽出したリンクをhtml内の特定のリンク(例:<a id="hoge" href="/index/"></a>)の末尾につけたい
と思います(例:<a href="/index/*****"></a>)。

大変お手数ではございますがご教示いただければ幸いです。
どうぞ宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

命題の件は以下ですが

javascript

1 2var str="example.com/12345/12/1234/"; 3console.log(str.match(/\d{5}/)[0]);

いくつか課題があります

  • 5文字続かない場合どうするのか?表示しない?nullを返す?

test/1234/123/

  • 6文字以上の数値の連続はどうするのか?出現する先頭から5文字なのか?別のロジックがあるのか?

test/123456/123

  • 2箇所以上5文字が続く場合はどうするのか?

test/12345/67890/123

  • 10文字以上続いた場合、2回マッチさせたいのか?

test/1234567890/123

追記

とにかく4文字以下や6文字以上はNGで、2回でてくることはないという条件で

function check(str){ var def="00000"; var r=str.match(/(?:^|[^\d]+)(\d{5})(?:[^\d]+|$)/); return r==null?def:r[1]; } console.log(check("123")); //NG console.log(check("12345")); //OK console.log(check("test/1234567/56789/123/")); //OK console.log(check("12345/123/123")); //OK console.log(check("test/12345/123/")); //OK console.log(check("test/1234/123/")); //NG console.log(check("test/123456/123/")); //NG console.log(check("test/123/12345")); // OK console.log(check("test/123456/123")); // NG console.log(check("test/1234567890/123")); // NG

投稿2017/10/27 01:13

編集2017/10/27 02:14
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sixth13

2017/10/27 01:32 編集

>5文字続かない場合どうするのか?表示しない?nullを返す? ご文字続かない場合はデフォルトの値(例:12345)を返します >6文字以上の数値の連続はどうするのか?出現する先頭から5文字なのか?別のロジックがあるのか? test/123456/123 上記と同じ5文字以外はデフォルトを返します >2箇所以上5文字が続く場合はどうするのか? test/12345/67890/123 存在しない予定です。 >10文字以上続いた場合、2回マッチさせたいのか? test/1234567890/123 5文字以外はマッチさせません。
yambejp

2017/10/27 02:15

パターンわけ追記しておきました
sixth13

2017/10/27 06:52 編集

ありがとうございます!大変助かりました! 下記はどのようにするのでがスマートでしょうか。 ****************** またその際に抽出したリンクをhtml内の特定のリンク(例:<a id="hoge" href="/index/"></a>)の末尾につけたい と思います(例:<a href="/index/*****"></a>)。 ******************
yambejp

2017/10/27 07:00 編集

戻り値を埋め込んでしまえば良いのでは? $content='<a id="hoge" href="/index/%s"></a>'; $ret='12345'; //戻り値 $content=sprintf($content,$ret); print htmlspecialchars($content); ※数値なら%sが%dでもよいですが、0はじまりなど考慮してとりあえず%sにしてあります
sixth13

2017/10/27 07:02

ありがとうございます!試してみます!そして調べてみます!
guest

0

正規表現 - JavaScript | MDN

↑こういうところを見て勉強してみるのをお勧めします。

投稿2017/10/27 01:11

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sixth13

2017/10/27 01:32

ありがとうございます、確認させていただきます。
guest

0

/[0-9]{5}/ //0-9が5回の出現

投稿2017/10/27 01:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問