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

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

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

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

Q&A

解決済

2回答

5021閲覧

正規表現での桁数指定

neruhi

総合スコア16

JavaScript

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

0グッド

0クリップ

投稿2018/06/15 04:08

編集2018/06/15 04:47

よろしくお願い致します。
フォームのonSubmitをしようしてフォーム送信中止を実装しています。

javascript

1 <script> 2 3 function check(){ 4 var flag = 0; 5 if(document.form.pass.value.match(/[^0-9]+/)){ 6 flag = 1; 7 } 8 if(flag){ 9 return false; 10 }else{ 11 return true; 12 } 13 } 14 </script>

半角数字のみは上記のようにできたのですが、ここに10桁のみの条件も実装したいです。
以内という条件ならば
/[^0-9]{10,10}+/
でもいいのかなと書いてみましたが、10桁のみは実装されず、半角数字のみの方も効かなくなりました。

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

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

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

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

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

m.ts10806

2018/06/15 04:27

起きた現象を書いて下さい。こういったチェックはチェックパターンを幾つか試して何がOKで何がNGかを提示されたほうが回答もつきやすいです。 >ダメでした。
neruhi

2018/06/15 04:47

追記いたしました!
guest

回答2

0

<input>minlength属性がありますので、フォーム送信時にチェックしたいだけならminlength=10 maxlength=10とすることで、対応ブラウザ(iOS 10.3以上、Edge 17以上、Chrome 40以上、Firefox 51以上)ではJavaScriptを書かずに実現可能です。

投稿2018/06/15 04:42

maisumakun

総合スコア145184

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

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

neruhi

2018/06/15 04:49

こちらを使っていたのですが、使わずにやってみなさいとのことで。。。
yambejp

2018/06/15 04:49

htmlの機能をつかうならpatternの指定も有効ですね
neruhi

2018/06/15 04:51

patternも使わず考えてみなさいと、言われておりまして。。。:
guest

0

ベストアンサー

半角数字のみは上記のように

[^0-9]だと「数字以外」では? → [0-9]もしくは\d

10桁のみ

{10} でどうでしょう?

そうじて、/^\d{10}$/

追記

元のソースを最大限使うと、「0-9以外」「9文字以内」「11文字以上」の3つをチェックする必要があります

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 document.querySelector('#hoge').addEventListener('input',function(e){ 4 document.querySelector('#check1').value=check1()?"ok":"ng"; 5 document.querySelector('#check2').value=check2()?"ok":"ng"; 6 }); 7}); 8function check1(){ 9 var flag = 0; 10 if(document.querySelector('#hoge').value.match(/[^0-9]+|^.{0,9}$|.{11}/)){ 11 flag = 1; 12 } 13 if(flag){ 14 return false; 15 }else{ 16 return true; 17 } 18} 19function check2(){ 20 return document.querySelector('#hoge').value.match(/^\d{10}$/); 21} 22</script> 23<form> 24<input type="text" id="hoge" name="hoge"><br> 25check1:<input type="text" id="check1"><br> 26check2:<input type="text" id="check2"><br> 27</form>

投稿2018/06/15 04:11

編集2018/06/15 05:04
yambejp

総合スコア114839

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

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

yambejp

2018/06/15 04:14

あ、「0-9」以外でフラグをたてて、falseを返しているのですね? マッチしたときだけtrueにするほうがよいですね
neruhi

2018/06/15 05:00

詳細にありがとうございます! きちんと読んで理解します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問