JS 邮箱正则表达式

JavaScript013

JS 邮箱正则表达式,第1张

/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g

开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。

代码如下:

<script type="text/javascript"> 

function isEmail(str){ 

var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 

return reg.test(str) 

var str = 'test@hotmail.com' 

document.write(isEmail(str)+'<br />') 

var str2 = 'test@sima.vip.com' 

document.write(isEmail(str2)+'<br />') 

var str3 = 'te-st@qq.com.cn' 

document.write(isEmail(str3)+'<br />') 

var str4 = 'te_st@sima.vip.com' 

document.write(isEmail(str4)+'<br />') 

var str5 = 'te.._st@sima.vip.com' 

document.write(isEmail(str5)+'<br />') 

</script>

扩展资料:

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

参考资料:正则表达式百度百科

所求正则表达式如下:

^(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)(?![^\(]*\))(?!.*\([^\)]*$)[\d+\-*/\(\)]*$

解释:

^

(?!.*\)\d)#规则A,不允许右括号后接数字

(?!.*[+\-*/]([+\-*/]|\)))#规则B,不允许符号后面接符号或右括号

(?!.*\([+*/])#规则C,不允许左括号后接运算符(- 可以表示负号)

(?!.*(\d|\))\()#规则D,不允许左括号前有数字或右括号

(?=\d|\-|\()#规则E,字符串开头必须是,数字,负号,左括号中的一个

(?=.*(\d|\))$)#规则F:结尾必须是数字或者右括号

(?![^\(]*\)) #规则H:右括号的左边至少存在一个左括号

(?!.*\([^\)]*$) #规则G:左括号的右边至少存在一个右括号

[\d+\-*/\(\)]*#开始匹配,字符串由数字,符号和括号组成

$

没考虑空格的情况,如果接受空格的输入,请自行添加。

JS是做不到限制小括号一一对应的,只有使用.NET的平衡组才能实现这个效果。

加入平衡组的正则表达式为:

^(?!.*[^\d+\-*/\(\)])(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)[^\(\)]*(((?'open'\()[^\(\)]*)+((?'-open'\))[^\(\)]*)+)*(?(open)(?!))$

由于使用了平衡组,此正则表达式需要在.NET环境下运行

测试代码:

<script>

var regex = /^(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)(?![^\(]*\))(?!.*\([^\)]*$)[\d+\-*/\(\)]*$/

alert(regex.test("1+2-3"))

alert(regex.test("100+100-2ssss"))

alert(regex.test("100+(20/2"))

alert(regex.test("100+哈哈哈"))

alert(regex.test("100++122"))

alert(regex.test("100+(100+200)/2"))

</script>