« タイマー | トップページ | 文字列操作 »

2007年5月18日 (金)

文字列の検証

dojo.validateには様々な文字列検証のための関数が用意されている。

文字列

dojo.validate.isText(value, flags)は、空文字列かどうかをチェックする。flagsを指定することで、文字列の長さ、最大の長さ、最小の長さを指定できる。文字列以外が指定されたときは常にtrueとなる。
dojo.require("dojo.validate");

dojo.validate.isText('txt');
dojo.validate.isText('123456', {length: 6});
dojo.validate.isText('123456', {maxlength: 6});
dojo.validate.isText('1234567', {minlength: 6});
dojo.validate.isText('1234567', {minlength: 6, maxlength:7});

数値

dojo.validate.isInteger(value, flags)は、数値かどうかをチェックする。引数のvalueは数値を文字列として指定する。flagsには、signedにtrue/false、separatorに区切り文字を指定できる。
dojo.require("dojo.validate");

dojo.validate.isInteger('+0');
dojo.validate.isInteger('1.000.000', {separator: "."});
dojo.validate.isRealNumber(value, flags)は、実数かどうかをチェックする。valueは数値を文字列として指定する。flagsは、placesとして小数点の位置を数値で指定する、decimalは小数点として使う文字列を指定する、exponentは浮動小数点表記を許すかどうかをtrue/falseで指定する、eSignedはeに+または-を付けることを許すかどうかをtrue/falseで指定する、その他、isIntegerと同じflagsを指定することができる。
dojo.require("dojo.validate");

dojo.validate.isRealNumber('+0');
dojo.validate.isRealNumber('1.0');
dojo.validate.isRealNumber('100.25e32', {exponent: true});
dojo.validate.isRealNumber('100.25', {places: 2});
dojo.validate.isInRange(value, flags)は、数値が指定した範囲内にあるかどうかをチェックする。valueは数値を文字列として指定する。flagsに数値範囲を指定する。flagsの値して、min, maxに数値、decimalとして小数点の文字列を指定できる。separatorおよびsymbolに指定した文字列は無視される。
dojo.require("dojo.validate");

dojo.validate.isInRange('10', {min: 1, max: 100});
dojo.validate.isInRange('-50', {min: -100, max: 100});
dojo.validate.isInRange('5.7e28', {min: 5.567e28, max: 6.000e28});
dojo.validate.isInRange('1,500,000', {separator: ',', min: 0});
dojo.validate.isCurrency(value, flags)は貨幣単位を含む数値かどうかをチェックする。flagsには、signed, symbol, placement, separator, fractional, cents, decimalを指定できる。fractionalとcentsは小数点を許すかどうかをtrue/falseで指定する。placementは、symbolの位置を'before'または'after'で指定する。
dojo.require("dojo.validate");
dojo.validate.isCurrency('\u20AC 123.456.789,00', {separator: ".", decimal: ",", symbol:"\u20AC"});

dojo.require("dojo.validate.us");
dojo.validate.us.isCurrency('$1,000');
dojo.validate.us.isCurrency('$1,000.25', {cents: true});

dojo.require("dojo.validate.jp");
dojo.validate.isJapaneseCurrency('\u00a51,000');
dojo.validate.isJapaneseCurrency('- \u00a510,000,000');

dojo.require("dojo.validate.de");
dojo.validate.isGermanCurrency('1.000 \u20AC');

Web

dojo.validate.isIpAddress(value, flags)はIPアドレス(IPv4 or IPv6)として正しいかをチェックする。flagsとして、allowDottedDecimal, allowDottedHex, allowDottedOctal, allowDecimal, allowHex, allowIPv6, allowHybridそれぞれにtrue/falseを指定できる。デフォルトは全てtrueとなる。
dojo.require("dojo.validate.web");

dojo.validate.isIpAddress('24.17.155.40');
dojo.validate.isIpAddress('24.17.155.40', {allowIPv6: false});
dojo.validate.isIpAddress('0x18.0x11.0x9b.0x28');
dojo.validate.isIpAddress('3482223595');
dojo.validate.isUrl(value, flags)は、正しいURL文字列かチェックする。flagsとして、allowLocal, allowIP, allowPort, scheme, それぞれにtrue/falseを指定できる。schemeがtrueのときは頭にhttp/https/ftp/ftpsがあるかチェックする。tldはドメイン名のチェックをする。host, ipAddress, tldのチェックと同じ
dojo.require("dojo.validate.web");

dojo.validate.isUrl('www.yahoo.com');
dojo.validate.isUrl('http://www.yahoo.com');
dojo.validate.isUrl('localhost:8080', {allowLocal: true});
dojo.validate.isUrl('http://www.yahoo.com/index.html?a=12&b=hello%20world#anchor');
dojo.validate.isEmailAddress(value, flags)は、Emailアドレスとして正しいかをチェックする。flagsとしてallowCruftにtrue/falseを指定できる。host, ipAddress, tldのチェックと同じ
dojo.require("dojo.validate.web");

dojo.validate.isEmailAddress('x@yahoo.com')
dojo.validate.isEmailAddress("", {allowCruft: true});
dojo.validate.isEmailAddressList(value, flags)は、Emailアドレスのリスト表現として正しいかをチェックする。listSeparatorを指定できる。emailAddress, host, ipAddress, tldのチェックと同じ
dojo.require("dojo.validate.web");

dojo.validate.isEmailAddressList(
  "x@yahoo.com \n x.y.z.w@yahoo.com ; o'mally@yahoo.com , fred&barney@stonehenge.com");
dojo.validate.isEmailAddressList(
  "mailto:x@yahoo.com; ; ; fred&barney@localhost", 
	{allowLocal: true, allowCruft: true, listSeparator: ";"});
dojo.validate.getEmailAddressList(value, flags)は、valueに含まれるEmailアドレスを配列にして返す。flagsにはisEmailAddressListと同じflagsを指定できる。

クレジットカード

クレジットカード番号のためのチェックをする関数として以下の4つが提供されている。
  • dojo.validate.isValidLuhn(value): Luhnアルゴリズムを使ってクレジットカード番号をチェックする
  • dojo.validate.isValidCvv(value, ccType): ccTypeに対して、CCV(value)が正しいかをチェックする
  • dojo.validate.isValidCreditCardNumber(value, ccType): ccTypeに対して、クレジットカード番号が正しいかチェックする
  • dojo.validate.isValidCreditCard(value, ccType): isValidLuhnとisValidCreditCardNumberの両方をチェックする
ccTypeは、以下のいずれかを指定する。
  • mc: Mastercard
  • ec: Eurocard
  • vi: Visa
  • ax: American Express
  • dc: Diners Club
  • bl: Carte Blanch
  • di: Discover
  • jcb: JCB
  • er: Enroute
以下に実行例を示す。
dojo.require("dojo.validate.creditCard");

dojo.validate.isValidLuhn('5105105105105100');
dojo.validate.isValidLuhn('5105-1051 0510-5100');
dojo.validate.isValidLuhn(38520000023237);
dojo.validate.isValidCvv('123','mc');
dojo.validate.isValidCvv(612,'ec');
dojo.validate.isValidCreditCard('5105105105105100','mc')

« タイマー | トップページ | 文字列操作 »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/232684/6459877

この記事へのトラックバック一覧です: 文字列の検証:

« タイマー | トップページ | 文字列操作 »