🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

正規表現

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

Q&A

解決済

2回答

837閲覧

JavaScriptでの正規表現判定

yasu0716

総合スコア15

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

正規表現

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

0グッド

0クリップ

投稿2019/10/02 12:41

JavaScriptで郵便番号の入力形式(ハイフンなし7桁)を確認し、
正しくない場合alertを表示するプログラムを組みたいと考えています。

以下のように、getElementsByNameによって入力された文字列を取得し、
.test(/^\d{7}$/)でハイフンなし7桁か確認、
if(data == false) {alert("入力形式が正しくありません。")}で
falseのとき警告文を出せると考えたのですが全く動作しません。

var dataの後にconsole.logを入れると"test() is not a function"と言われたので、
testの使い方がおかしいのでしょうか・・・。

拙いコードですが、ご教授お願いいたします。

html

1<script language="JavaScript">//正規表現チェック 2 function RegEx(){ 3 var pcode = document.getElementsByName('zip11'); 4 var data = pcode[0].test(/^\d{7}$/); 5 if(data == false) {alert("入力形式が正しくありません。")}; 6} 7</script> 8 9 <input 10 name="zip11" 11 onKeyUp="AjaxZip3.zip2addr(this,'','addr11','addr11');" required 12 class="text" 13 placeholder="郵便番号(ハイフンなし)" 14 onkeyup="this.setAttribute('value', this.value);" 15 onchange="RegEx()" 16 value=""/> 17<label class="label">郵便番号(ハイフンなし)</label>

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

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

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

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

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

guest

回答2

0

ベストアンサー

入力値を使いたいなら value属性から拾ってください。

<input>: 入力欄 (フォーム入力) 要素 - HTML: HyperText Markup Language | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/Input#value

あと、testはRegExpのメソッドなので書き方が違います。

JavaScript

1var data = /^\d{7}$/.test(pcode[0].value); 2```**動くサンプル:**[https://jsfiddle.net/tL27qy94/](https://jsfiddle.net/tL27qy94/) 3 4【RegExp.prototype.test() - JavaScript | MDN5[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)

投稿2019/10/02 12:44

編集2019/10/02 12:51
kei344

総合スコア69596

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

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

yasu0716

2019/10/03 06:08

親切なご回答、大変ありがとうございました。 簡潔、かつ丁寧な説明に対し、ベストアンサーを贈らせていただきます。
guest

0

参考までに

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 [].forEach.call(document.querySelectorAll('input[pattern]'),x=>{ 4 x.addEventListener('change',e=>{ 5 var t=e.target; 6 var reg=new RegExp("^$|^"+t.getAttribute('pattern')+"$"); 7 var n=t.nextElementSibling; 8 if(!t.value.match(reg)){ 9 if(n===null || !n.classList.contains('err')){ 10 n=document.createElement('span'); 11 n.textContent=t.dataset["message"]; 12 n.classList.add('err'); 13 t.parentNode.insertBefore(n,t.nextSibling); 14 } 15 }else if(n && n.classList.contains('err')){ 16 t.parentNode.removeChild(n); 17 } 18 }); 19 }); 20}); 21</script> 22<input type="text" name="zip11" pattern="[0-9]{7}" placeholder="郵便番号ハイフン無し" maxlength="7" data-message="入力形式が正しくありません。"><br> 23<input type="text" name="zip12" pattern="[0-9]{3}-[0-9]{4}" placeholder="郵便番号ハイフンあり" maxlength="8" data-message="入力形式が正しくありません。"><br>

投稿2019/10/03 01:04

yambejp

総合スコア116688

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

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

yasu0716

2019/10/03 06:09

ご回答、ありがとうございました。 いただいたコードもスムーズに理解できるよう、勉強したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問