本文介绍如何在ASP.NET MVC环境下使用JavaScript和RegExp进行客户端输入验证。通过onkeypress事件捕获按键,兼容IE与Firefox获取KeyChar,利用String.fromCharCode转换字符。示例涵盖数字、中文及邮箱格式的正则匹配,展示RegExp构造函数与直接量写法,以及test方法的实际应用。
数字输入验证实现
代码如下:
@Html.TextBox("txt", null, new {@style="width:300;", onkeypress="return RegValidateIsDigit(event)" }) 在文本框中注册了onkeypress事件,当用户在文本框中输入字符并按下键盘时,将触发该JavaScript函数。
代码如下:
<script type="text/javascript">
function RegValidateIsDigit(e) {
var KeyChar;
debugger;
////判断浏览器
if (window.event) //IE
{
KeyChar = e.keyCode;
}
else if (e.which)///FireFox等
{
KeyChar = e.which;
}
var str = String.fromCharCode(KeyChar); ///通过UniCode编码来查找相应的字符
return regIsDigit(str);
}
function regIsDigit(fData) {
///定义正则进行匹配
var reg = new RegExp("^[0-9]$");
return (reg.test(fData));
}
</script> 首先判断浏览器类型以进行兼容性处理。然后通过String.fromCharCode(KeyChar)获取对应的字符。
最后在regIsDigit函数中
定义正则表达式进行匹配
代码如下:
var reg = new RegExp("^[0-9]$"); 因为匹配数值0-9,所以也等同于\d,即
代码如下:
var reg = new RegExp("\\d$"); 正则表达式直接量被定义为包含在一对斜杠(/)之间的字符。因此,JavaScript代码可能如下所示:
代码如下:
var reg=/\d$/; 此处使用了test函数来检查指定的字符串是否存在。常用的其他正则相关函数还有exec、match、search、replace和split等。
理解第一个示例后,只需套用相应的正则表达式即可实现其他验证功能。
2. 文本框仅允许输入中文
中文输入验证实现
代码如下:
function RegValidateIsChinese(str) {
//var reg = new RegExp("^[\u4e00-\u9fa5]+$");
var reg = /^[\u4E00-\u9FA5]+$/;
var str=document.getElementById("text").value;
return (reg.test(str));
} RegValidateIsChinese("输入的字符串") 若为汉字则返回true,若不全是汉字则返回false
3. 判断邮箱输入格式
邮箱格式验证实现
代码如下:
function RegValidateIsEmail(str) {
//var reg = /^([a-zA-Z0-9_-])+@@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
var reg=/^\w+((-\w+)|(\.\w+))*@@{1}\w+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig;
if (reg.test(str)) {
alert("是邮箱");
}
else {
alert("格式不对");
}
} 两个定义初步测试均可使用。