チェックは、正規表現でやれば、いろんな言語でいけそうなので、正規表現で、いろんな値をチェックする方法を考える、シリーズ「正規表現でのチェック方法を考える」。
いままで、文字と数字のチェックをやってきたので、今回は、混在についてやります。
また、桁数、文字数について書いていなかったかもしれないので、書いておきます。
なお、このシリーズで、特に断りのない限り、全角の¥は、本当は半角の円マーク(ないしはバックスラッシュ)です。
■課題
こういう学生番号があったとします。
A12-9876J
1文字目 A-Zの英字1文字 - 学部学科を表す 2-3文字目 数字2桁 - 入学年度(08=>2008年入学) 4文字目 -(ハイフン) - 固定 5-8文字目 数字4桁 - 学生固有の番号 9文字目 A-Zの英字1文字 - チェックデジットをアルファベットに変換
で、このチェックをします。
今回は、アルファベットがA-Zなので[A-Z]となり、数字のところは\dになります。
あと、桁数が決まっているので、桁数指定です。
■桁数指定
桁数は、{数字}を書くと、その数分、前にかかれたものが続くことになります
¥d{2}だと、2桁分、¥d=数字が続きます。
なお、何桁から何桁の間という場合は、{開始,終了}のように、,で区切って書きます。
2桁から6桁なら{2,6}
未入力から、5桁=5桁以下なら{0,5}
みたいなかんじです。
■ソース
ということで、課題は、
/^[A-Z]¥d{2}-¥d{4}[A-Z]$/
ということになります。これをもとに、プログラムしたのがこちら
<HTML> <HEAD> <TITLE>JavaScriptテスト広場</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function load() { } function mycheck(val) { if (val.search(/^[A-Z]¥d{2}-¥d{4}[A-Z]$/) != -1 ) { alert("OK"); } else { alert("エラー"); } } --> </SCRIPT> </HEAD> <BODY onload="load()"> <FORM NAME="buf"> <INPUT NAME="Text1" TYPE="hidden"> </FORM> <FORM NAME="zikko"> <INPUT NAME="text1" TYPE="TEXT"> <INPUT NAME="button1" TYPE="BUTTON" VALUE="実行" onclick=mycheck(text1.value)> </FORM> </BODY> </HTML> |
(上記 ¥ < > は、本当は半角)
■ということで・・・
このシリーズはとりあえずいったん終わりとします。
ほんとうはあと、各言語における正規表現の書き方というのがあるのですが、
それについては、気が向いたらやります。
で、今回のシリーズについてまとめたのが、
ここ http://www.geocities.jp/xmldtp/index_check.htm
のページです(エイプリールフールのときに使ったページ。
ちゃんと、今回正規表現が埋まっています)。