首页 > 程序开发 > 软件开发 > Java >

正则表达式和表单验证的那点事

2011-09-06

——正则表达式之快速扫盲篇 ——\ 做为转意,即通常在"\"后面的字符不按原来意义解释^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配...

——正则表达式之快速扫盲篇 ——
\ 做为转意,即通常在"\"后面的字符不按原来意义解释
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次(任意多次),/a*/ 将匹配零或多个 a
+ 匹配前面元字符1次或多次,/a+/ 将匹配一或多个 a ,/ba*/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba*/将匹配b,ba
x|y 匹配x或y
(x) 匹配x保存x在名为$1...$9的变量中
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
\d 匹配一个数字字符,等价于 [0-9]
\D 匹配一个非数字字符,等价于 [^0-9]
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等价于 [^\n\f\r\t\v]
\t 匹配一个制表符
\v 匹配一个重直制表符
\w 数字、字母、下划线,等价于[a-zA-Z0-9_]
\W 非 \w ,等价于[^a-zA-Z0-9_]

——正则表达式之快速进阶篇——

好,熟悉以上的内容后,可能我们大家还不能自如的运用正则表达式,下面我们用正则表达式实现表单的验证,让我们一起快速上手。

首先向大家介绍一下在表单验证中经常用到的正则表达式:

验证邮政编码:/^\d{6}$/
正则表达式都是以/^开头,以$/结束,它们分别代表匹配一行的开头和末尾,\d{6}是说精确匹配六次整数。

验证固定电话:/^\d{3}-\d{8}|d{4}-\d{7}$/

验证身份证号码:/^\d{15}$|^\d{18}$|^\d{17}[Xx]$/
红色部分表示精确匹配15位整数,对应以前的15位省份证号。
蓝色部分表示精确匹配18位整数,对应现在的18位省份证号。
粉色部分表示精确匹配17位整数,最后一位匹配X或x,对应省份证最后一位是X或x的18位省份证。
这三部分是或的关系。

验证电子邮箱地址:/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
既然这个看上去有点晕,那那我们就直接进入应用篇。

——正则表达式之快速应用篇——

1. 密码的检验 检验要求:必须在八位以上且需要有字母和数字以外的字符
function checkPassWord()
{
var passWord = document.getElementById("tfPassWord").value;
var passWordO = /^[a-zA-Z0-9]*[^a-zA-Z0-9]+[a-zA-Z0-9]*$/;
if(passWord.search(passWordO) == -1)
{
alert("您输入的密码格式不正确,请重新输入!");
return false;
}
if(document.getElementById("tfPassWord").length <= 8)
{
alert("您输入的密码小于8位,请输入大于8位的密码!");
return false;
}
return true;

}
2. 验证出生年月日的验证 检验要求:格式为yyyy-mm-dd

function checkBirthday()
{
var birthday = document.getElementById("tfBirthday").value;
var birthdayO = /^\d{4}-\d{2}-\d{2}$/;
if(birthday.search(birthdayO) == -1)
{
alert("您输入的出生年月日有误,请重新输入!");
return false;
}
return true;
}
3. 身份证号的验证 调用事件:onblur="checkID()"
function checkID()
{
var ID = document.getElementById("tfID").value;
var IDO =/^(\d{15}|\d{18}|\d{17}[Xx])$/;
if(ID.search(IDO) == -1)
{
alert("您输入的身份证号码无效!");
return false;
}
var year = ID.substr(6,4);
var mm = ID.substr(10,2);
var dd = ID.substr(12,2);
var birthdate = year+"-"+mm+"-"+dd;
if(document.getElementById("tfBirthday").value.search(birthdate) == -1)
{
alert("请输入合法的身份证号码!");
return false
}
return true;
}
4. 邮编的验证 验证要求:邮编必须为6位数字
function checkPostcode()
{
var postcode = document.getElementById("tfPostcode").value;
var postcodeO = /^\d{6}$/;
if(postcode.search(postcodeO) == -1)
{
alert("请输入正确的邮编!");
return false;
}
return true;
}
5. email的检验 验证要求:符合一般邮箱的地址
function checkEmail()
{
var email = document.getElementById("tfEmail").value;
var emailO = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if(email.search(emailO) == -1)
{
alert("您输入的邮件地址不正确,请重新输入!");
return false;
}
return true;
}

作者“极致书生”

相关文章
最新文章
热点推荐