テキストフィールドに英文字以外が入力されているか調べる

説明

テキストフィールドに入力されたデータが英文字かどうかを調べるには正規表現を使います。JavaScriptではmatch()で正規表現の文字列を指定することができ、結果が配列で返されます。もし、何もマッチしなかった場合にはmatch()はnullを返します。英文字かどうか調べる場合にはマッチする条件を英文字にマッチではなく、英文字以外にマッチするように指定します。英文字以外にマッチさせるための正規表現指定はmatch(/[^a-z]/)となります。^は〜以外という意味になります。[^a-z]とすると英文字のaからz以外のものにマッチすることになります。英文字の場合、小文字と大文字がありこれらを区別せずにチェックしたい場合にはiオプション(ignore)を指定します。これはmatch(/[^a-z]/i)のように記述します。
JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>テキストフィールドに英文字以外が入力されているか調べる</h1>
<form action="./check.cgi" method="get" name="mainForm">
キー:<input type="text" name="qCode" id="qCode"><br>
(a〜zの英文字以外はエラー)<br>
<input type="button" id="checkButton" value="チェック">
</form>
</body>
</html>

window.onload = function(){
document.getElementById("checkButton").onclick = function(){
var text = document.getElementById("qCode").value;
var result = text.match(/[^a-z]/i);
if (!text || result) {
alert("a〜zの英文字だけ入力してください");
document.getElementById("qCode").focus();
document.getElementById("qCode").select();
}
}
}