js判断email的正则

/**
* 此函数进行Email格式检测.
* @param str 待检测字符串.
* @return 是Email格式返回真.
*/
function isEmail(str){
res = /^[0-9a-zA-Z_\-\.]+@[0-9a-zA-Z_\-]+(\.[0-9a-zA-Z_\-]+)*$/;
var re = new RegExp(res);
return !(str.match(re) == null);
}
这是一个JS函数.调用时传入要判断的串,返回是否符合格式.
共三行代码.后两行就是判断串是否符合第一行规定的正则式.
关键在于第一行的正则式.只要你弄明白了.以后的什么判断都可以用了,写一个正则式就行了..
正则式可以看作是对字符串的描述.他描述的是规则..
在JS里面.正则式以/^开头,以$/结尾.中间的就是具体规则的描述.现在看看第一行去掉头尾后,中间的部分:[0-9a-zA-Z_\-\.]+@[0-9a-zA-Z_\-]+(\.[0-9a-zA-Z_\-]+)*
正则式一般是这样描述字串的:某个(或某些)字符重复多少次,+?*这几个表示次数:+表示至少一次?表示一次或零次*表示无数次.列如:a*则可以表示空,a,aa,aaa,...等,如果是a?则表示a或者空.如果要表示某几个字符,则用中括号把他们括起来,中括号就表示其中的一个.例如,要表示数字的串就是[0123456789]*,当然这样写字符太多了,所以有一个-表示中间的所有,那么,就可以这样写[0-9]*
如果要表示小数,则是[0-9]*.[0-9]*,这是不严格的写法,只要一串数据之间有一个点就符合了.如果我们再扩展一下,如果小数点后面没有数据,则可以省略小数点,且小数点前面一定要有数据,则正则式为[0-9]+(.[0-9]+)?.
现在再看上面的正则式,还不能满足你要的@前面不能有点的要求.改成下面就行了:
res = /^[0-9a-zA-Z_\-\.]*[0-9a-zA-Z_\-]@[0-9a-zA-Z_\-]+(\.[0-9a-zA-Z_\-]+)*$/;
这样就是在@前面的字符就是不能为.的了.
补充说一下:如果字符后面没有次数,表示一次这个字符.另外,由于-是一个表范围的符号,所以如果在中括号里要表示这个字符的话,就加上转义符\,也就是说\-是表示的一个字符"-",如果要表示\则要使用\\..
 

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

 
网站分类

基于 Z-Blog 1.8 Spirit Build 80710 [login]

Copyright LeadNT. Some Rights Reserved.