ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

正規表現でのチェック方法を考える-その4 数字○桁、2進、8進、16進

2008-04-11 14:25:30 | 正規表現

 チェックは、正規表現でやれば、いろんな言語でいけそうなので、正規表現で、いろんな値をチェックする方法を考える、シリーズ「正規表現でのチェック方法を考える」

 今、数字関係をやっているのですが、今回は、数字何桁っていう桁数指定の話です。

 で、それだけだと、あまりにも短いので、2進数、8進数、16進数についても、書いてみたいと思います。

 なお、このシリーズにおいて、説明文中の¥は、断りがなければ、半角の円マーク(ないしは、バックスラッシュ)に変えてください(入力が面倒なので全角にしています)




■数字○桁

 これは、数字指定の¥dのあとに、中カッコで、桁数を書けばよい
 数字3桁なら、

  /^¥d{3}$/

 だし、3桁以下(0桁、つまり未入力もOK)なら

  /^¥d{0,3}$/

 みたいなかんじ。




■2進、8進

 2進数なら、0,1なので、[01]でOK
 なので、たとえば2進数3桁以下なら

 /^[01]{0,3}$/

 みたいなかんじ。

 8進数は、0から7までなので、[0-7]でOK
 なので、たとえば8進数3桁以下なら

 /^[0-7]{0,3}$/

 みたいなかんじ。





■16進数

16進数の場合、0-9と、A-Fまでだけど、a-fで表すときもあるので、
 [0-9A-Fa-f]となる。
 なので、たとえば8進数3桁以下なら

  /^[0-9A-Fa-f]{0,3}$/

 みたいなかんじ。




■きょうのサンプルソース

 16進のところ、上記の条件だと、
 7Fdのように、大文字小文字混在もOKになる。
 まー、OKでもいいんだけど、やっぱそれは・・・(^^;)

 っていうので、混在はいけない!とする場合
(ただし、大文字、小文字どちらも可)のサンプル


<HTML>
<HEAD>
<TITLE>JavaScriptテスト広場</TITLE>
<SCRIPT LANGUAGE="JavaScript"> 
<!--
function load()
{
}

function mycheck(val)
{
	if (val.search(/^([0-9A-F]{0,3}|[0-9a-f]{0,3})$/)	!=	-1 )
	{
	}
	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>

(上記< > ¥は、本当は半角)




■なお。。

数字の場合、頭の0は、省略するのが普通です。

010とかかず、10とかきます。

でも、16進の場合、dとかかずに、0dと書くことも
多いです(バイト単位で書く場合などは、このように
0を省略しないです)。
 なので、今回の例は、頭の0も許していますが、
もし、0以外、頭の0は許したくないなら、

たとえば、16進なら

  /^(0|[1-9A-Fa-f][0-9A-Fa-f]*)$/

みたいなかんじになります。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« むかしは、大量データ読み込... | トップ | 地球温暖化対策には、仮想化... »
最新の画像もっと見る

正規表現」カテゴリの最新記事