以前做对日外包是用到的一些前端校验函数
/**
* 文字列の長さを取得*/
String.prototype.Blength = function() {
var arr = this.match(/[^\u0000-\u00FF\uFF61-\uFF9F\uFFE8-\uFFEE]/ig);
return arr == null ? this.length : this.length + arr.length;
}
/**
* 全角カナと数字以外チェック
* @param {String} inputStr 入力した文字列
*/
function isZenkakuigai(inputStr) {
if (inputStr.length > 0) {
var iLen = inputStr.length;
for (var iCount = 0; iCount < iLen; iCount++) {
var blnFlg = false;
sAt = inputStr.charAt(iCount);
for(var j=0; j<KANA_FIELD_CHECK_TABLE.length; j++){
if(sAt == KANA_FIELD_CHECK_TABLE[j]){
blnFlg = true;
break;
}
}
if(blnFlg == false){
return false;
}
}
return true;
}
return false;
}
var KANA_FIELD_CHECK_TABLE = [
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
'ァ','ィ','ゥ','ェ','ォ','ャ','ュ','ョ','ッ',
'ー',
'ア','イ','ウ','エ','オ','カ','キ','ク','ケ','コ',
'サ','シ','ス','セ','ソ','タ','チ','ツ','テ','ト',
'ナ','ニ','ヌ','ネ','ノ','ハ','ヒ','フ','ヘ','ホ',
'マ','ミ','ム','メ','モ','ヤ','ユ','ヨ','ラ','リ',
'ル','レ','ロ','ワ','ヲ','ン',
'ガ','ギ','グ','ゲ','ゴ','ザ','ジ','ズ','ゼ','ゾ',
'ダ','ヂ','ヅ','デ','ド','バ','ビ','ブ','ベ','ボ','ヴ',
'パ','ピ','プ','ペ','ポ',
'.','。',',','・','゛','゜','「','」','(',')','[',']','{','}','〔','〕',
'《','》','『','』','【','】','-',
'Ⅰ','Ⅱ','Ⅲ','Ⅳ','Ⅴ','Ⅵ','Ⅶ','Ⅷ','Ⅸ','Ⅹ',
' ',' '
];
/**
* 電話番号チェック
* @param {String} inputStr 入力した文字列
*/
function isPhoneNumber(inputStr) {
if (inputStr.length > 0) {
var phoneStr = "0123456789-";
for (var i = 0; i < inputStr.length; i++) {
var phoneChar = inputStr.substring(i, i + 1);
if (phoneStr.indexOf(phoneChar) == -1) {
return false;
}
}
}
return true;
}
/**
* バイトチェック
* @param {String} inputStr 入力した文字列
*/
function isByte(inputStr) {
if (inputStr.length > 0) {
if (!isAllDigits(inputStr)) {
return false;
} else {
var iValue = parseInt(inputStr);
if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
return false;
}
}
}
return true;
}
/**
* 整数チェック
* @param {String} inputStr 入力した文字列
*/
function isInteger(inputStr) {
if (inputStr.length > 0) {
if (!isAllDigits(inputStr)) {
return false;
} else {
var iValue = parseInt(inputStr);
if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
return false;
}
}
}
return true;
}
/**
* 長整数チェック
* @param {String} inputStr 入力した文字列
*/
function isLong(inputStr) {
if (inputStr.length > 0) {
if (!isAllDigits(inputStr)) {
return false;
} else {
var iValue = parseInt(inputStr);
if (isNaN(iValue) || !(iValue >= -9223372036854775808 && iValue <= 9223372036854775807)) {
return false;
}
}
}
return true;
}
/**
* 数字型チェック
* @param {String} argvalue 入力した数字
*/
function isAllDigits(argvalue) {
argvalue = argvalue.toString();
var validChars = "0123456789";
var startFrom = 0;
if (argvalue.substring(0, 2) == "0x") {
validChars = "0123456789abcdefABCDEF";
startFrom = 2;
}
else if (argvalue.charAt(0) == "-") {
startFrom = 1;
}
for (var n = startFrom; n < argvalue.length; n++) {
if (validChars.indexOf(argvalue.substring(n, n + 1)) == -1)
return false;
}
return true;
}
/**
* 禁止文字チェック
* @param {String} inputStr 入力した文字列
*/
function hasForbiddenChar(inputStr) {
if (inputStr.length == 0) {
return false;
}
var iLen = inputStr.length;
for (var iCount = 0; iCount < iLen; iCount++) {
sAt = inputStr.charAt(iCount);
if (forbiddenChar.indexOf(sAt) != -1) {
return true;
}
}
return false;
}
/**
* 半角カナチェック
* @param {String} inputStr 入力した文字列
*/
function hasHankakuKana(inputStr) {
if (inputStr.length == 0) {
return false;
}
var iLen = inputStr.length;
for (var iCount = 0; iCount < iLen; iCount++) {
sAt = escape(inputStr.charAt(iCount));
if ("%uFF61" <= sAt && sAt <= "%uFF9D") {
return true;
}
}
return false;
}
/**
* エラーメッセージを表示する
* @param {String} errFlg エラーフラグ
* @param {String} inputComId 検証するコンポーネントID
* @param {String} chkErrComId エラーメッセージを表示するコンポーネントID
* @param {String} msg エラーメッセージ
*/
function dispMsg(errFlg, inputComId, chkErrComId, msg) {
jQuery("#" + inputComId).css("backgroundColor","");
if (errFlg) {
jQuery("#" + inputComId).addClass('txt_error_red');
jQuery("#" + chkErrComId).text(msg);
} else {
jQuery("#" + inputComId).removeClass('txt_error_red');
jQuery("#" + chkErrComId).text("");
}
return errFlg;
}
/**
* nullチェック
* @param {String} s 入力した文字列
*/
function isNull(s) {
if (s == null || s == "") {
return true;
}
var regu = /^[ ]+$/;
var re = new RegExp(regu);
return re.test(s);
}
/**
* 最大長さチェック
* @param {String} s 入力した文字列
*/
function isMaxLength(s, maxLen) {
if (s == "") {
return false;
}
if (s.Blength() > maxLen) {
return true;
} else {
return false;
}
}
/**
* 文字数チェック
* @param {String} s 入力した文字列
*/
function isFixedLength(s, fixedLen) {
if (s.Blength() == fixedLen) {
return true;
} else {
return false;
}
}
/**
* 範囲チェック
* @param {String} s 入力した文字列
* @param {String} min 最小値
* @param {String} max 最大値
*/
function isNotRange(s, min, max) {
if (isNumber(s) && isNumber(min) && isNumber(max)) {
if (Number(s) >= Number(min) && Number(s) <= Number(max)) {
return false;
} else {
return true;
}
}
return true;
}
/**
* 以上範囲チェック
* @param {String} s 入力した文字列
* @param {String} min 最小値
*/
function isLowerRange(s, min) {
if (isNumber(s) && isNumber(min)) {
if (Number(s) < Number(min)) {
return true;
} else {
return false;
}
}
return false;
}
/**
* 英数字チェック
* @param {String} s 入力した文字列
*/
function isNumberOrLetter(s) {
var regu = /^[0-9a-zA-Z]+$/;
var re = new RegExp(regu);
return re.test(s);
}
/**
* ダブル型チェック
* @param {String} s 入力した文字列
*/
function isDouble(s) {
var regu = /^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/;
var re = new RegExp(regu);
return re.test(s);
}
/**
* 数字型チェック
* @param {String} s 入力した文字列
*/
function isNumber(s) {
try {
if (isNaN(Number(s))) {
return false;
}
return true;
} catch (e) {
return false;
}
}
/**
* 電話番号チェック
* @param {String} s 入力した電話番号
*/
function isTel(s) {
var regu = /^((\d{2}-\d{4}-\d{4})|(\d{3}-\d{4}-\d{4}))$/;
var re = new RegExp(regu);
return re.test(s);
}
/**
* メールアドレスチェック
* @param {String} emailStr 入力した文字列
*/
function isMail(emailStr) {
if (emailStr.length == 0) {
return true;
}
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d)|(([a-z]|\d)([a-z]|\d|-|\.|_|~)*([a-z]|\d)))\.)+(([a-z])|(([a-z])([a-z]|\d|-|\.|_|~)*([a-z])))$/i.test(emailStr);
}
/**
* タイムチェック
* @param {String} s 入力した文字列
*/
function isMaskTime(s) {
if (s == null || s == "" || s.length != 5 || s.indexOf(":") == -1) {
return false;
}
try {
var hour = Number(s.substring(0, 2));
var minter = Number(s.substring(3));
if (isNaN(hour) || hour < 0 || hour >= 24 || isNaN(minter) || minter < 0 || minter >= 60) {
return false;
}
} catch (e) {
return false;
}
return true;
}