自然数チェック


	/**
	 * 自然数チェック
	 * @param v チェック対処の値
	 * @returns {Boolean} true:はい  false:いいえ
	 */
	function checkNaturalNo(v) {
	
		var flg=false;
		if(v.match(/^[0-9]*$/)){
			flg=true;
		}
	
		return flg;
	
	}
	

正規表現

	var res = "あいうえお9aabbc123".match('/\\d{2}$/');
	if(res){
		console.log(res[0]); // → 23
		console.log(res['index']); // → 17 (先頭からの位置。先頭は0で、全角は2とカウント)
	}
	

サンプル

正規表現 if文の省略記法

正規表現から直接、testプロパティを呼び出してコードを短縮できる。

ソースコード

	$(function(){
		var str='http://localhost/';
		if(/:\/\//.test(str)){
			console.log('URLです');
		}else{
			console.log('URLでありません');
		}
		
	});
	

コンソール出力

	URLです


正規表現 | パスワードバリデーション


	// 半角英数字チェック
	var pw_text = "abcd1234";
	//var res = pw_text.match(/^[a-zA-Z0-9]+$/);
	var res = pw_text.match(/^(?=.*?[a-zA-Z])(?=.*?\d)[a-zA-Z\d]{8,100}$/);
	if(res==null){
		res = false;
	}else{
		res = true;
	}
	console.log(res);
	
下の方法でもOK.

	var res = pw_text.match(/^[a-zA-Z\d]{8,32}$/);
	

PwValidK.js パスワードバリデーションK

Demo

PwValidK.js download

PwValidK.jsの使い方

	var pwValidK = new PwValidK();
	var pw_text = "abCD1234あいうえお";
	var res = pwValidK.check(pw_text);
	console.log(res); // → {check: false, err_msg: "パスワードは半角英数字で入力してください。"}
	

会員登録フォームのバリデーション | jquery.validate.js

Demo jquery.validate.jsのダウンロード先

jquery_validate_js.js


	$(()=>{
		
		// 標準エラーメッセージの変更
		$.extend($.validator.messages, {
			email: '正しいメールアドレスの形式で入力して下さい',
			required: '入力必須です',
			phone: "正しい電話番号の形式で入力してください",
		});
	
		// 独自ルールを追加
		jQuery.validator.addMethod("katakana", function(value, element) {
				return this.optional(element) || /^([ァ-ヶー]+)$/.test(value);
			}, "全角カタカナを入力してください"
		);
		jQuery.validator.addMethod("kana", function(value, element) {
				return this.optional(element) || /^([ァ-ヶーぁ-ん]+)$/.test(value);
			}, "全角ひらがな・カタカナを入力してください"
		);
		jQuery.validator.addMethod("hiragana", function(value, element) {
				return this.optional(element) || /^([ぁ-ん]+)$/.test(value);
			}, "全角ひらがなを入力してください"
		);
		jQuery.validator.addMethod("phone", function(value, element) {
				return this.optional(element) || /^[0-9+-]*$/.test(value);
			}, "正しい電話番号を入力してください"
		);
		jQuery.validator.addMethod("postcode", function(value, element) {
				return this.optional(element) || /^¥d{3}¥-?¥d{4}$/.test(value);
			}, "郵便番号を入力してください(例:123-4567)"
		);
		jQuery.validator.addMethod("password_strength", function(value, element) {
				return this.optional(element) || /^(?=.*?[a-z])(?=.*?¥d)[a-z¥d]{6,100}$/.test(value);
			}, "英数字を組み合わせたパスワードを入力してください"
		);
	
		// 入力ルールの定義
		var rules = {
			'last_name': {required: true, maxlength: 50},
			'first_name': {required: true, maxlength: 50},
			'last_name_kana': {required: true, katakana: true, maxlength: 50},
			'first_name_kana': {required: true, katakana: true, maxlength: 50},
			'email': {required: true, email: true},
			'password': {required: true,  minlength: 8, maxlength: 100, password_strength: true},
			'password_confirm': {equalTo: '[name=password]' },
			'tel': {required: true, phone: true},
			'post_code': {postcode: true},
			'address': {maxlength: 100},
			'gender': {required: true},
			'birthday': {date: true},
			'interests[]': {required: true},
			'plan': {required: true},
			
		};
	
		// 入力項目ごとのエラーメッセージ定義
		var messages = {
			'last_name': {
				required: "「氏」を入力してください"
			},
			'first_name': {
				required: "「名」を入力してください"
			},
			'interests[]': {
				required: "いずれかを選択してください"
			},
			password: {
				required: 'パスワードを入力してください',
				minlength: 'パスワードは8文字以上で入力してください',
			},
			password_confirm: {
				required: '確認のため再度入力してください',
				equalTo: '同じパスワードをもう一度入力してください。'
			}
		};
		
		$('#form1').validate({
				rules: rules,
				messages: messages,
	
				//エラーメッセージ出力箇所を調整
				errorPlacement: function(error, element){
					if (element.is(':radio')) {
						error.appendTo(element.parent());
					}else if (element.is(':checkbox')) {
						error.appendTo(element.parent());
					}else {
						error.insertAfter(element);
					}
				}
			});
		
	});
	
	function checkValid(){
		$res = $('#form1').valid();
		console.log($res);// true:すべてOK, false:一つ以上のエラーあり
	}

	

HTML


	<!DOCTYPE html>
	<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<meta name="google" content="notranslate" />
	   	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	   	<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>バリデーション | jquery.validate.js | ワクガンス</title>
		<link rel='shortcut icon' href='/home/images/favicon.ico' />
		
		<link href="/note_prg/css/bootstrap.min.css" rel="stylesheet">
	
		<script src="/note_prg/js/jquery3.js"></script>	<!-- jquery-3.3.1.min.js -->
		<script src="/note_prg/js/bootstrap.min.js"></script>
	
		<script src="jquery.validate.min.js"></script>
		<script src="jquery_validate_js.js"></script>
		
		<style>
			#form1 .inp_w{
				margin-bottom:10px;
			}
			#form1 label{
				display:inline-block;
				width:170px;
			}
			#form1 label.error{
				color:red;
				font-size:0.8em;
				width:auto;
			}
			#form1.hosoku{
				color:#636363;
				font-size:0.75em;
			}
		</style>
		
	</head>
	<body>
	<div id="header" ><h1>バリデーション | jquery.validate.js | ワクガンス</h1></div>
	<div class="container">
	
	
	<h2>Demo</h2>
	<form id="form1">
	
		<div class="inp_w">
			<label for="last_name">氏名</label>
			<input name="last_name" type="text" value="" placeholder="山田" />
			<input name="first_name" type="text" value="" placeholder="太郎" />
		</div>
		
		<div class="inp_w">
			<label for="last_name_kana">カタカナ氏名</label>
			<input name="last_name_kana" type="text" value="" placeholder="ヤマダ" />
			<input name="first_name_kana" type="text" value="" placeholder="タロウ" />
		</div>
		
		<div class="inp_w">
			<label for="email">Eメール</label>
			<input name="email" type="text" value="" placeholder="example@example.com" />
		</div>
		
		<div class="inp_w">
			<label for="password" style="vertical-align:top">パスワード</label>
			<div style="display:inline-block">
				<input type="password" name="password" class="password" placeholder="パスワード"/><br>
				<input type="password" name="password_confirm" class="password"  placeholder="パスワード(もう一度)" />
			</div>
			<br>
		</div>
		
		<div class="inp_w">
			<label for="tel">電話番号</label>
			<input name="tel" type="text" value="" placeholder="090-0123-4567" />
			<span class="hosoku"> 国際電話番号形式の入力可 +81-90-0123-4567</span>
		</div>
		
		<div class="inp_w">
			<label for="post_code">郵便番号</label>
			<input name="post_code" type="text" value="" placeholder="123-4567" style="width:8em"/>
		</div>
		
		<div class="inp_w">
			<label for="address">住所</label>
			<input name="address" type="text" value="" placeholder="東京都千代田区千代田〇〇1-2-3" style="width:50%"/>
		</div>
		
		<div class="inp_w">
			<label for="gender">性別</label>
			<div style='display:inline-block'>
				<input name="gender" type="radio" value="man" />男姓
				<input name="gender" type="radio" value="woman" />女姓
			</div>
		</div>
		
		<div class="inp_w">
			<label for="gender">生年月日</label>
			<input type="date"  name="birthday" value="1970-1-1" min="1900-1-1" max="2100-12-31">
		</div>
		
		<div class="inp_w">
			<label for="interests[]">興味あるもの</label>
			<div style='display:inline-block'>
				<input type="checkbox" name="interests[]" value="fishing">釣り
				<input type="checkbox" name="interests[]" value="climbing">登山
				<input type="checkbox" name="interests[]" value="cook">料理
				<input type="checkbox" name="interests[]" value="game">ゲーム
				<input type="checkbox" name="interests[]" value="other">その他
			</div>
		</div>
		
		<div class="inp_w">
			<label for="plan">プラン</label>
			<select name="plan">
				<option value=""> -- プランを選択 -- </option>
				<option value="1">猫観光ツアープラン</option>
				<option value="2">登山ガイド</option>
				<option value="3">遺跡ツアー</option>
				<option value="4">食べ歩きツアー</option>
			</select>
		</div>
	
		<input type="button" value="入力チェック" onclick="checkValid()" class="btn btn-success"/>
	</form>
	
	</body>
	</html>