JavaScript – チェック処理テスト用HTML
JavaScriptのチェック処理で使用したテスト用のHTMLファイルです。
<html> <head> <title>JavaScript Test</title> <script lang="JavaScript"> <!-- /** * チェック対象文字列が入力されているかチェックします。 * * @param argValue チェック対象文字列 * @return 文字列が入力されている場合はtrue、 * 文字列が入力されていない場合はfasle */ function isNotEmpty(argValue) { if (argValue == "" || argValue == null) { return false; } return true; } /** * チェック対象文字列が入力されていないかチェックします。 * * @param argValue チェック対象文字列 * @return 文字列が入力されていない場合はtrue、 * 文字列が入力されているの場合はfasle */ function isEmpty(argValue) { if (argValue == "" || argValue == null) { return true; } return false; } /** * チェック対象文字列が半角数字のみかチェックします。 * * @param argValue チェック対象文字列 * @return 全て半角数字の場合はtrue、 * 半角数字以外の文字が含まれている場合はfalse */ function isNumeric(argValue) { if (argValue.match(/[^0-9|]/g)) { return false; } else { return true; } } /** * チェック対象文字列が半角数字(小数点、符号を含む)のみかチェックします。 * * @param argValue チェック対象文字列 * @return 有効文字列("0123456789"および".-+")のみで構成されている場合はtrue、 * 有効文字列以外の文字が含まれている場合はfalse */ function isNumericDecimal(argValue) { if (argValue.match(/[^0-9|^.+-]/g)) { return false; } else { return true; } } /** * チェック対象文字列が半角英数字のみかチェックします。 * * @param argValue チェック対象文字列 * @return 全て半角英数字の場合はtrue、 * 半角英数字以外の文字が含まれている場合はfalse */ function isAlphabetNumeric(argValue) { if (argValue.match(/[^A-Z|^a-z|^0-9]/g)) { return false; } else { return true; } } /** * チェック対象文字列が半角英字のみかチェックします。 * * @param argValue チェック対象文字列 * @return 全て半角英字の場合はtrue、 * 半角英字以外の文字が含まれている場合はfalse */ function isAlphabet(argValue) { if (argValue.match(/[^A-Z|^a-z]/g)) { return false; } else { return true; } } /** * チェック対象文字列が全角ひらがなのみかチェックします。 * * @param argValue チェック対象文字列 * @return 全て全角ひらがなの場合はtrue、 * 全角ひらがな以外の文字が含まれている場合はfalse */ function isHiragana(argValue) { if (argValue.match(/[^あ-ん|^ー]/g)) { return false; } else { return true; } } /** * チェック対象文字列が全角のみかチェックします。 * * @param argValue チェック対象文字列 * @return 全て全角文字の場合はtrue、 * 全角文字以外が含まれている場合はfalse */ function isAllFullSize(argValue) { var length = argValue.length * 2; if (length == getByteLength(argValue)) { return true; } else { return false; } } /** * チェック対象文字列が半角のみかチェックします。 * * @param argValue チェック対象文字列 * @return 全て半角文字だった場合はtrue、 * 半角文字以外が含まれている場合はfalse */ function isAllHalfSize(argValue) { var length = argValue.length; if (length == getByteLength(argValue)) { return true; } else { return false; } } /** * 指定された文字列が有効な日付かチェックします。 * ※閏年判定含む。 * * @param argValue チェック対象日付(8桁の半角数字(yyyymmdd)の書式) * @return 日付として有効な場合はtrue、 * 日付として無効な場合はfalse */ function isDate(argValue) { if (isEmpty(argValue)) { // 未入力の場合 return false; } if (argValue.length != 8 ) { // 8桁以外の場合 return false; } if (!isNumeric(argValue)) { // 半角数字以外の文字列が含まれている場合 return false; } var iYear = parseInt(argValue.substr(0, 4)); var iMonth = parseInt(argValue.substr(4, 2)); var iDay = parseInt(argValue.substr(6, 2)); var iMaxDayOfMonth = Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if (iMonth < 1 || iMonth > 12) { return false; } if (iDay < 1 || iDay > iMaxDayOfMonth[iMonth - 1]) { return false; } if (iMonth != 2) { return true; } if (iDay > 29) { return true; } if ((iYear % 4) == 0 && (iYear % 100) != 0) { return true; } if ((iYear % 400) == 0) { return true; } return false; } /** * 指定された文字列がメールアドレスとして有効かどうかチェックします。 * ※xxxxx@xxxxx.xxxの形式と一致するかどうかで判断します。 * * @param argValue チェック対象文字列 * @return メールアドレスとして有効な場合はtrue、 * メールアドレスとして無効な場合はfalse */ function isMailAddress(argValue) { if (isEmpty(argValue)) { // 未入力の場合 return false; } if (argValue.match(/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)+$/)) { return true; } else { return false; } } /** * 指定された文字列が電話番号として有効かどうかチェックします。 * ※9999-9999-9999の形式と一致するかどうかで判断します。 * * @param argValue チェック対象文字列 * @return 電話番号として有効な場合はtrue、 * 電話番号として無効な場合はfalse */ function isTelNumber(argValue) { if (isEmpty(argValue)) { // 未入力の場合 return false; } if (argValue.match(/^[0-9]+\-[0-9]+\-[0-9]+$/)) { return true; } else { return false; } } /** * 指定された文字列が郵便番号として有効かどうかチェックします。 * ※999-9999、999-99、999の形式と一致するかどうかで判断します。 * * @param argValue チェック対象文字列 * @return 郵便番号として有効な場合はtrue、 * 郵便番号として無効な場合はfalse */ function isZipCode(argValue) { if (isEmpty(argValue)) { // 未入力の場合 return false; } if (argValue.match(/^\d{3}$|^\d{3}-\d{2}$|^\d{3}-\d{4}$/)) { return true; } else { return false; } } /** * マイナス符号チェックを行います。 * ・パターンマッチ 0~9、"-" * ・マイナス符号の数 0 or 1 * * 例) * -123 --> OK * 123 --> OK * - --> NG * 123- --> NG * --123 --> NG * * @param argValue チェック対象文字列 * @return チェックOKの場合はtrue、 * チェックNGの場合はfalse */ function isMinus(argValue) { if (argValue.match(/[^0-9|^\-]/g)) { // パターンマッチ 0~9,"-"以外はNG return false; } // "-"の入力個数を取得する var count = 0; for (var i = 0; i < argValue.length; i++) { if (argValue.charAt(i) == "-") { count++; } } if (2 <= count) { // "-"が2つ以上入力されている場合はNG return false; } if (count == 1 && argValue.charAt(0) != "-") { // "-"が入力されていて、かつ先頭に"-"がない場合はNG return false; } if (count == 1 && argValue.length == 1) { // "-"が入力されていて、"-"のみの入力はNG return false; } return true; } /** * 小数点チェックを行います。 * ・パターンマッチ 0~9、"." * ・小数点の数 0 or 1 * ・整数部の桁数チェック * ・小数部の桁数チェック * * 例)整数部 3, 小数部 2の場合 * 123 --> OK * 123.45 --> OK * 1.2 --> OK * 1234.56 --> NG * 123.456 --> NG * . --> NG * .123 --> NG * 123. --> NG * * @param argValue チェック対象文字列 * @param argIntKetasu 整数部の入力可能桁数 * @param argDecimalKetasu 小数部の入力可能桁数 * @return チェックOKの場合はtrue、 * チェックNGの場合はfalse */ function isDecimal(argValue, argIntKetasu, argDecimalKetasu) { if (argValue.match(/[^0-9|^.]/g)) { // パターンマッチ 0~9,"."以外はNG return false; } // 小数点の数を取得する var count = 0; for (var i = 0; i < argValue.length; i++) { if (argValue.charAt(i) == ".") { count++; } } if (2 <= count) { // "."が2つ以上入力されている場合はNG return false; } if (argValue.charAt(0) == ".") { // 先頭に小数点が入力された場合はNG return false; } // 小数点以下のチェック if (count == 1) { // 小数点が入力された場合のみチェック // 小数点以下の桁数チェック var idx = argValue.lastIndexOf("."); var decimalPart = argValue.substring(idx); // 小数点以下の桁数を取得する var length = decimalPart.length - 1; if (length == 0) { // 小数点以下の入力がない場合はNG return false; } if (argDecimalKetasu < length) { // 小数点以下の桁数がオーバーしている場合はNG return false; } } // 整数部の桁数チェック var intPart = ""; if (count == 1) { // 小数点が入力された場合 intPart = argValue.substring(0, argValue.indexOf(".")); } else { intPart = argValue; } if (argIntKetasu < intPart.length) { // 整数の桁数がオーバーしている場合はNG return false; } return true; } /** * マイナス符号付小数点チェックを行います。 * ・パターンマッチ 0~9、"-"、"." * ・パターンマッチ "-","."のみはNG * ・マイナス符号の数 0 or 1 * ・小数点の数 0 or 1 * ・整数部の桁数チェック * ・小数部の桁数チェック * * 例)整数部 3, 小数部 2の場合 * -123 --> OK * 123 --> OK * 123.45 --> OK * -123.45 --> OK * 1.2 --> OK * - --> NG * 123- --> NG * --123 --> NG * 1234.56 --> NG * 123.456 --> NG * . --> NG * .123 --> NG * 123. --> NG * -. --> NG * * @param argValue チェック対象文字列 * @param argIntKetasu 整数部の入力可能桁数 * @param argDecimalKetasu 小数部の入力可能桁数 * @return チェックOKの場合はtrue、 * チェックNGの場合はfalse */ function isMinusDecimal(argValue, argIntKetasu, argDecimalKetasu) { var minusFlg = false; var decFlg = false; if (argValue.match(/[^0-9|^\-|^.]/g)) { // パターンマッチ 0~9,"-","."以外はNG return false; } if (argValue.match(/[^\-|^.]/g)) { } else { // パターンマッチ "-","."のみはNG return false; } // 小数点の数を取得する var count = 0; for (var i = 0; i < argValue.length; i++) { if (argValue.charAt(i) == ".") { decFlg = true; count++; } } if (2 <= count) { // "."が2つ以上入力されている場合はNG return false; } // "-"の入力個数を取得する count = 0; for (i = 0; i < argValue.length; i++) { if (argValue.charAt(i) == "-") { minusFlg = true; count++; } } if (2 <= count || (count == 1 && argValue.charAt(0) != "-")) { // "-"が2つ以上入力されている場合はNG // "-"が入力されていて、かつ先頭に"-"がない場合はNG return false; } // 小数点以下のチェック if (decFlg) { // 小数点以下の桁数チェック var idx = argValue.lastIndexOf("."); var decimalPart = argValue.substring(idx); // 小数点以下の桁数を取得する var length = decimalPart.length - 1; if (length == 0) { // 小数点以下の入力がない場合はNG return false; } if (argDecimalKetasu < length) { // 小数点以下の桁数がオーバーしている場合はNG return false; } } // 整数部の桁数チェック var intPart = ""; length = 0; if (decFlg) { // 小数点が入力された場合 intPart = argValue.substring(0, argValue.indexOf(".")); } else { intPart = argValue; } length = intPart.length; if (minusFlg) { // マイナスが入力された場合は-1 length--; } if (argIntKetasu < length) { // 整数の桁数がオーバーしている場合はNG return false; } return true; } /** * チェック対象文字列のバイト数を取得します。 * * @param argValue チェック対象文字列 * @return 文字列のバイト数 */ HALF_SIZE_KANA = "ァアィイゥウェエォオカキクケコサシスセソタチッツテトナニヌネノハヒフヘホマミムメモャヤュユョヨラリルレロワヲンー゚゙"; function getByteLength(argValue) { var i = 0; var count = 0; for (i = 0; i < argValue.length; i++) { if (0 <= HALF_SIZE_KANA.indexOf(argValue.charAt(i))) { // 半角カタカナの場合は1バイトとして計算します count++; } else if (escape(argValue.charAt(i)).length >= 4) { count+=2; } else { count++; } } return count; } --> </script> </head> <body> <form> <fieldset> <legend>入力チェック</legend> <input type="text" name="text01" size="50" value="aaaaa" /> <input type="button" value="チェック" onClick="alert(isNotEmpty(document.forms[0].text01.value));" /> </fieldset> <br/> <fieldset> <legend>未入力チェック</legend> <input type="text" name="text02" size="50" value="" /> <input type="button" value="チェック" onClick="alert(isEmpty(document.forms[0].text02.value));" /> </fieldset> <br/> <fieldset> <legend>半角数字チェック</legend> <input type="text" name="text11" size="50" value="0123456789" /> <input type="button" value="チェック" onClick="alert(isNumeric(document.forms[0].text11.value));" /> </fieldset> <br/> <fieldset> <legend>半角数字チェック(小数点、符号を含む)</legend> <input type="text" name="text12" size="50" value="-+.0123456789" /> <input type="button" value="チェック" onClick="alert(isNumericDecimal(document.forms[0].text12.value));" /> </fieldset> <br/> <fieldset> <legend>半角英数字チェック</legend> <input type="text" name="text13" size="50" value="abcxyzABCXYZ0123456789" /> <input type="button" value="チェック" onClick="alert(isAlphabetNumeric(document.forms[0].text13.value));" /> </fieldset> <br/> <fieldset> <legend>半角英字チェック</legend> <input type="text" name="text14" size="50" value="abcxyzABCDEXYZ" /> <input type="button" value="チェック" onClick="alert(isAlphabet(document.forms[0].text14.value));" /> </fieldset> <br/> <fieldset> <legend>ひらがなチェック</legend> <input type="text" name="text21" size="50" value="あいうえおわをん" /> <input type="button" value="チェック" onClick="alert(isHiragana(document.forms[0].text21.value));" /> </fieldset> <br/> <fieldset> <legend>全角チェック</legend> <input type="text" name="text22" size="50" value="あア亜!" /> <input type="button" value="チェック" onClick="alert(isAllFullSize(document.forms[0].text22.value));" /> </fieldset> <br/> <fieldset> <legend>半角チェック</legend> <input type="text" name="text23" size="50" value="aA1!" /> <input type="button" value="チェック" onClick="alert(isAllHalfSize(document.forms[0].text23.value));" /> </fieldset> <br/> <fieldset> <legend>日付チェック</legend> <input type="text" name="text31" size="50" value="20050131" /> <input type="button" value="チェック" onClick="alert(isDate(document.forms[0].text31.value));" /> </fieldset> <br/> <fieldset> <legend>メールアドレスチェック</legend> <input type="text" name="text32" size="50" value="xxxxx@xxxxx.xxx" /> <input type="button" value="チェック" onClick="alert(isMailAddress(document.forms[0].text32.value));" /> </fieldset> <br/> <fieldset> <legend>電話番号チェック</legend> <input type="text" name="text33" size="50" value="03-1234-5678" /> <input type="button" value="チェック" onClick="alert(isTelNumber(document.forms[0].text33.value));" /> </fieldset> <br/> <fieldset> <legend>郵便番号チェック</legend> <input type="text" name="text34" size="50" value="100-0001" /> <input type="button" value="チェック" onClick="alert(isZipCode(document.forms[0].text34.value));" /> </fieldset> <br/> <fieldset> <legend>マイナス符号チェック</legend> <input type="text" name="text35" size="50" value="-123" /> <input type="button" value="チェック" onClick="alert(isMinus(document.forms[0].text35.value));" /> </fieldset> <br/> <fieldset> <legend>数値チェック(小数点あり)</legend> <input type="text" name="text36" size="50" value="123.45" /> <input type="button" value="チェック" onClick="alert(isDecimal(document.forms[0].text36.value, 3, 2));" /> </fieldset> <br/> <fieldset> <legend>数値チェック(マイナス符号あり・小数点あり)</legend> <input type="text" name="text37" size="50" value="-123.45" /> <input type="button" value="チェック" onClick="alert(isMinusDecimal(document.forms[0].text37.value, 3, 2));" /> </fieldset> <br/> </form> </body> </html>
関連記事
コメント 0