说明:
元字符是正则表达式语法的一部分,有这些:
( [ { / ^ $ | ) ? * + .
任何时候使用他们都要对它们进行转义,比如: var regStr=//?/;
但是:如果不用上面的“字面量语法”的时候就要进行双重转义,如:var regStr="//?";
在用JS中预定义的特殊字符时候,如:/t,/n;还有一组预定义字符类如:.,/d,/D,/w;更应该注意转义。
我在复制代码的时候选的是HTML,//就被过滤成/了,所以会出现差异,这也是前面为什么网友们发现验证不对的地方。下面用文本粘贴:
正确的如下:
<html>
<head>
<title>正则表达式验证示例</title>
<script language="JavaScript">
<!--
function checkdata(){//检查函数
//检查是否数字
var txt = document.forms[0].num.value;
if(txt.search("^-?//d+(//.//d+)?$")!=0){
alert("请输入一个数字!");
document.forms[0].num.select();
return false;
}
//检查是否整数
txt = document.forms[0].int.value;
if(txt.search("^-?//d+$")!=0){
alert("请输入一个整数!");
document.forms[0].int.select();
return false;
}
//检查EMAIL是否合法
txt = document.forms[0].email.value;
if(txt.search("^(?://w+//.?)*//w+@(?://w+//.?)*//w+$")!=0){
alert("请输入正确的电子邮件!");
document.forms[0].email.select();
return false;
}
alert("检查通过!");
return true;
}
-->
</script>
</head>
<body>
<p>
<form action="" method="post" OnSubmit="return checkdata()">
<br>请输入一个数字:<input type="text" name="num">
<br>请输入一个整数:<input type="text" name="int">
<br>请输入电子邮件:<input type="text" name="email">
<br><input type="submit" value="提交">
<form>
</body>
</html> 再补充一些:常用验证:
<script language="JavaScript">
<!-- //对付老式浏览器所用注释
function testisNum(s){
var s =document.getElementById('num').value;
if(isNum(s))
{
alert("是数字");
}
else
{
alert("请出入数字");
}
}
//校验用户姓名:只能输入3-20个以字母和数字开头的字串
function isTrueName(s)
{
var pattern=/^/w{3,20}$/;
if(pattern.exec(s))
{
return true;
}
return false;
}
//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s)
{
var pattern =/^[+]{0,1}(/d){1,3}[ ]?([-]?((/d)|[ ]){1,12})+$/;
if(pattern.exec(s))
{
return true;
}
return false;
}
//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobile(s)
{
//var patrn=/^[+]{0,1}(/d){1,3}[ ]?([-]?((/d)|[ ]){1,12})+$/;
var patrn=/^((/(/d{0,3}/))|(/d{0,3}/-))?13|15/d{9}$/;
if (!patrn.exec(s)){
return false;
}
return true;
}
//校验(国内)邮政编码
function isPostalCode(s)
{
var patrn=/^[0-9]{6}$/;
//var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)){
return false;
}
return true;
}
function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) {
return false;
}
return true;
}
//校验邮箱
function isEmail(s)
{
var patrn=/^[a-zA-Z0-9_/-]{1,}@[a-zA-Z0-9_/-]{1,}/.[a-zA-Z0-9_/-.]{1,}$/;
if (!patrn.exec(s)) {
return false;
}
return true;
}
//校验日期
function isdate(s)
{
var patrn=/^((/d{2}(([02468][048])|([13579][26]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[/-///s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[/-///s]?((0?[1-9])|([1-2][0-9])))))|(/d{2}(([02468][1235679])|([13579][01345789]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[/-///s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[/-///s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(/s(((0?[0-9])|([1-2][0-3]))/:([0-5]?[0-9])((/s)|(/:([0-5]?[0-9])))))?$/;
if (!patrn.exec(s)){
return false;
}
return true;
}
//校验货币格式
function isCurrency(s)
{
var patrn=/^/d+(/./d+)?$/;
if (!patrn.exec(s)) {
return false;
}
return true;
}
//校验搜索关键字
function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|///][/]/{/}:;/'/,.<>?]{1}[^`~!@$%^&()+=|///][/]/{/}:;/'/,.<>?]{0,19}$/;
if (!patrn.exec(s)) {
return false;
}
return true;
}
//检查是否数字
function isNum(s)
{
var pattern = /^/d+(/./d+)?$/;
if(pattern.test(s))
{
return true;
}
return false;
}
//检查是否整数
function isInt(s)
{
var pattern = /^-?/d+$/;
if(s.search(pattern)!=0)
{
return false;
}
return true;
}
-->
</script>
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
补充 ::::::::::::::
<script type="text/javascript">
function validate(){
var reg = new RegExp("^[0-9]*$");
var obj = document.getElementById("name");
if(!reg.test(obj.value)){
alert("请输入数字!");
}
if(!/^[0-9]*$/.test(obj.value)){
alert("请输入数字!");
}
}
</script> 验证数字的正则表达式集
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$