作者No (you stay there)
看板Ajax
标题Re: [问题] Javascript验证email的语法
时间Thu Apr 5 03:16:44 2012
※ 引述《satoshi3 (Ayanami Satoshi)》之铭言:
: 验证email格式
: 同时含有'@'和'.'字元
: '@'後必须有'.',且中间至少间隔一个字元
你容许的字元应该要再定义一下比较清楚
: '@'不为第一个字元,'.'不为最後一个字元
: '@'前至少3字元以上
: 须为'.com'结尾
: 语法是这样
: var EmailString=document.MyForm.MyEmail.value;
: var strLength=EmailString.length;
: var index1=EmailString.indexOf("@");
: var index2=EmailString.indexOf(".",index1);
: index3=EmailString.indexOf(".com",EmailString.length-4);
: (其实index3这行我不确定究竟要不要var 因为刚试发现都跑得出来)
: 宣告变数後 再设定以下条件就可以完成
: if(index1==-1 || index2==-1 || index2<=index1+1 || index1==0 ||
: index2==strLength-1 || index1<3 || index3!=(EmailString.length-4))
这种验证建议可以用正规表达式
会比较轻松愉快
假设你容许的字元是英文大小写 + 数字 + 底限
if(/^\w{3,}@\w+\.(tw|com)$/i.test(EmailString)){
//pass
}
else{
//not pass
}
: 我现在的问题在於 如果要将条件修改为
: "验证结尾必须是.tw或.com" 该怎麽写比较好?
: 我顶多只知道如何只验证为.com结尾 却不知如何设定同时验证是否为.com或.tw的条件
用正规表达式的话
如果需要允许更多种结尾,例如加上 .org 和 .edu
只要修改成这样就可以了
/^\w{3,}@\w+\.(tw|com|org|edu)$/
不用正规表达式的话...
这题我要跳过了XDD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.138.18
※ 编辑: No 来自: 118.170.138.18 (04/05 03:17)
1F:→ satoshi3:感谢说明!!! 04/05 13:01
2F:→ satoshi3:不知是否能请问/^\w{3,}@\w+\.(tw|com)$/i.test 04/05 13:01
3F:→ satoshi3:(EmailString)这行的详细解说呢?刚学还不大懂Q_Q 04/05 13:02
4F:→ satoshi3:\w是任意字元(英数底线等)~{3,}表3位元~但,的意义是? 04/05 13:03
a{3} 为刚好3个连续的a
a{3,5} 为3~5个连续的a皆可
a{3,} 为3个以上连续的a皆可
所以 \w{3,} 是匹配"'@'前至少3字元以上"这个规则
5F:→ satoshi3:$/i.test~还有这行条件内各个斜线的的意思是? 04/05 13:04
这边是呼叫RegExp物件的test方法
/斜线是宣告的格式
\是escape或者像\w
6F:→ satoshi3:(EmailString)表示验证EmailString的值我还明白O_O 04/05 13:05
JavaScript的正规表达式宣告方法为
var re = new RegExp('pattern', 'flag');
var re = /pattern/flag;
就像Array的宣告一样,有另一种写法
var items = new Array();
var items = [];
所以 /^\w{3,}@\w+\.(tw|com)$/i
pattern 部分为 ^\w{3,}@\w+\.(tw|com)$
flag 部分为 i
flag这边比较单纯,i是忽略大小写
pattern大概是这样
^ 开头匹配
$ 结尾匹配
\w{3,} @之前至少3个以上\w字元
@ 就是@
\w+ @之後至少一个\w字元
\. 就是.
(tw|com)在正规要匹配多个有序字串的可能时,必须要用()做sub pattern
|代表or,因此後面可以是 tw 也可以是 com
另外()的用途很多,不限定这样用而已~
比较细节的规则和说明可以看一下
我用来教学的参考网站XD
http://www.visibone.com/regular-expressions/
※ 编辑: No 来自: 140.134.26.22 (04/05 13:54)
7F:推 satoshi3:再次感谢详细说明~我懂了Q[]Q!!!(跪) 04/05 21:06