2009年10月1日木曜日

今、JavaScriptの正規表現について勉強中です。

Yawdbaでは、Web画面でユーザが入力したときなどに、エラーチェックが必要だと思っています。しかし、このチェックをWebサーバーサイドで行うと画面のちらつきなどが発生してしまうので、エラーチェックについては、JavaScriptにせざるおえません。
エラーチェックには、入力した文字列が数字かどうか、日付かどうか、あるいは、離散的な値か、などいろいろのパターンがあります。それぞれの文字パターンについて検査する必要がありますが、これをJavaScriptでゴリゴリ書いていては、能がありません。現在は、JavaScriptの正規表現で、見通しの良いJavaScript関数ができないか検討しています。

とりあえず、数値かどうか判断するための関数を作ってみました。正規表現では、「[0-9]+」までで整数部分、「(\x2e[0-9]*)?」で小数部分を表しています。\x2eはピリオドを16進数で表したものです。

★ JavaScript
function check(v)
{
str = v ;
rnum = /[0-9]+(\x2e[0-9]*)?/; /* 正規表現文字列 */
if(rnum.test(str)) {
alert("数値です");
}
else {
alert("エラー発生");
}
}

★ Html
<input type="text" name="mytext" >
<input type="button" value="Check" onClick="check(mytext.value)">

正規表現は、検索する文字列に正規表現パターンが現れるとパターンマッチしてしまいます。例えば「a 1234 ddd」と言う文字列を検査しようとした場合、文字列の一部に「1234」の数字と認識できるパターンがありますので、数字と成ってしまいます。どうしたらよいでしょうか?お知恵を拝借できればと思います。
今回は、数字かどうか判断するものでしたが、今後は、Yawdbaのサイトに順次掲載したいと思います。

0 件のコメント:

コメントを投稿