<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script> function validate()
{
var message = document.form1.Message.value;
var emailPat = /^(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)$/
var RE = /^[\d\.\-]+$/;
var Url = "^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$";
if (message.match(emailPat)) {
alert("Your Message contains an email! please remove ..");
return false;
}
else if(RE.test(message))
{
alert("Your Message contains an phone number! please remove ..");
return false;
}
else if (message.match(Url)) {
alert("Contains a URL.");
return false;
}
return true;
}
</script>
</head>
<body>
<form name="form1" onsubmit=" return validate();">
Your Message:<br><textarea name="Message" cols="60" rows="3" wrap="OFF"></textarea>
<input type="submit" value="submit" />
</form>
</body>
在这里,我尝试将一个textarea与任何手机,电子邮件ID或网址放在一起,在这里,如果我给单个像只有电子邮件ID它的工作,我会faild连接所有,当我试图给多个它失败时
答案 0 :(得分:2)
您的正则表达式包含特殊符号 ^
和$
,它们对应行的开头和结尾。
这意味着你的正则表达式
/^(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)$/
检查该行开始后(^
)应该有一些电子邮件(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)
,然后该行结束($
)。因此,如果您测试在电子邮件之前或之后有一些文本的字符串,则匹配将不起作用。
如果要检查包含匹配正则表达式的子字符串的字符串,则不应包含^
和$
符号。
所以试试:
var emailPat = /(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)/
var RE = /[\d\.\-]+/;
var Url = "[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+";