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

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

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

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

正規表現

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

Q&A

解決済

1回答

993閲覧

正規表現での文字列の置換について質問です。

kadot

総合スコア27

JavaScript

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

正規表現

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

0グッド

0クリップ

投稿2021/06/10 14:20

正規表現での文字列の置換について質問です。

telというクラスがついてる要素の中が電話番号だったら
リンクを付けるという処理をしたのですが
なんでちゃんと動いているのかわからないです。

main.jsのソースは、ネットの記事から拾ってきたのですが
main.js4行目 function(match)
の引数matchはどこから渡ってくる値なのかが理解できません。

matchの値を出力すると「000-0000-0000」が入っています。

なぜtelクラスの要素の中身がここに入るのでしょうか。

参考記事
https://support.shutto.com/howto/%E3%80%90shutto%E5%B0%8F%E6%8A%80%E3%80%91%E9%9B%BB%E8%A9%B1%E7%95%AA%E5%8F%B7%E3%81%AB%E8%87%AA%E5%8B%95%E3%81%A7tel%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%92%E4%BB%98%E3%81%91%E3%82%8Bjavascript/

html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8</head> 9<body> 10 <p class="tel">000-0000-0000</p> 11 <div class=""> 12 <p>000-0000-0000</p> 13 <p>カレー</p> 14 </div> 15 <script src="https://code.jquery.com/jquery-2.2.4.min.js" 16 integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 17 <script src="main.js"></script> 18</body> 19</html>

javascript

1$(function () { 2 $('.tel').each(function(i, el){ 3 if (!$(el).find('a').length){ 4 el.innerHTML = el.innerHTML.replace(/^0\d{2,3}-\d{1,4}-\d{4}$/g, function(match){ 5 console.log(match); 6 return '<a href="tel:' + match.replace(/-/g, "") + '">' + match + '</a>'; 7 }); 8 } 9 }); 10});

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

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

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

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

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

guest

回答1

0

ベストアンサー

引数matchはどこから渡ってくる値なのかが理解できません。

replace関数からです。
参考:String.prototype.replace() - JavaScript | MDN

「コールバック関数」という概念を勉強しましょう。

投稿2021/06/10 14:25

otn

総合スコア85901

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

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

kadot

2021/06/10 14:40

replace関数の仕組みとして引数にmatchがあったのですね。 コールバック関数勉強します。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問