teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

携帯電話番号の書式に対応

2017/04/25 04:54

投稿

think49
think49

スコア18194

answer CHANGED
@@ -4,27 +4,33 @@
4
4
 
5
5
  - [RegExp - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
6
6
 
7
- ### 国内の電話番号
7
+ ### 国内の電話番号フォーマット
8
8
 
9
9
  総務省に国内の電話番号書式の説明があります。
10
10
 
11
11
  - [Q2 市外局番・市内局番とはどのようなものですか? - 総務省|電気通信番号の利用・指定|電話番号に関するQ&A](http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a.html#q2)
12
+ - [Q5 携帯電話やPHSに電話するには? - 総務省|電気通信番号の利用・指定|電話番号に関するQ&A](http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/q_and_a.html#q5)
12
13
 
13
14
  ```JavaScript
14
- var targetString = '<tag>0120-111-2222</tag><tag>東京都千代田何処其処1-2-12</tag><tag>03-5253-5111</tag><tag>0120-12-4672</tag><tag>045-876-1386</tag><tag>なにがしか</tag>',
15
+ function findTelNumberAll (string) {
15
- tel = targetString.match(/0\d{1,4}[(-]?\d{1,4}[)-]?\d{4}/g);
16
+ var tel = string.match(/0(?:\d[(-]?\d{4}|(?![789]0)\d{2}[(-]?\d{3}|\d{3}[(-]?\d{2}|\d{4}[(-]?\d|[789]0[(-]?\d{4})[)-]?\d{4}(?!\d)/g);
16
17
 
17
- if (tel) {
18
- tel = tel.reduce(function (array, tel) {
19
- tel = tel.replace(/[()-]/g, '');
20
- if (tel.length === 10) {
21
- array.push(tel);
18
+ return tel ? tel : [];
22
- }
19
+ }
23
20
 
24
- return array;
21
+ var targetString = ['<tag>東京都千代田何処其処1-2-12</tag>',
22
+ '<tag>0120-111-2222</tag>', // 誤
23
+ '<tag>03(4444)5555</tag>', // 正
24
+ '<tag>0120-12-4567</tag>', // 正
25
+ '<tag>045-987-6543</tag>', // 正
26
+ '<tag>01234-5-6789</tag>', // 正
27
+ '<tag>070-1111-2222</tag>', // 正
28
+ '<tag>080-1111-2222</tag>', // 正
29
+ '<tag>090-1111-2222</tag>', // 正
30
+ '<tag>090-111-2222</tag>', // 誤
25
- }, []);
31
+ '<tag>なにがしか</tag>'].join();
32
+
26
- console.log(JSON.stringify(tel)); // ["0352535111","0120124672","0458761386"]
33
+ console.log(JSON.stringify(findTelNumberAll(targetString))); // ["03(4444)5555","0120-12-4567","045-987-6543","01234-5-6789","070-1111-2222","080-1111-2222","090-1111-2222"]
27
- }
28
34
  ```
29
35
 
30
36
  ### 0120-111-2222
@@ -36,4 +42,8 @@
36
42
  console.log(/[0-9()-]{10,11}/.exec('0120-111-2222')[0]);
37
43
  ```
38
44
 
45
+ ### 更新履歴
46
+
47
+ - 2017/04/25 13:54 携帯電話番号の書式に対応
48
+
39
49
  Re: KenKimura さん