正则

正则是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
正则表达式语法格式://

任意字符(除了\n之外)

2)元字符
^ 匹配字符串开始的位置,不匹配任何字符
$ 匹配字符串结束的位置,不匹配任何字符

  1. 字符组/自定义字符集可以匹配[ ]中包含的任意一个字符。虽然可以是任意一个,但只能是一个。

    [0-9] 任意一个数字 相当于0123456789中任意一个
    [A-Z] 任意一个大写字母
    [a-z] 任意一个小写字母
    [\u4e00-\u9fa5] 表示任意一个汉字
    [ABCD] ABCD中的任意一个字符
    [a-zA-Z] 任意一个字母
    [a-zA-Z0-9_] 任意一个字母和数字下划线
    [^0-9] 任意不是数字的字符

  2. 字符范围缩写/预定义字符集

    \d ==>[0-9] 一个数字
    \w ==>[a-zA-Z0-9_] 任意一个字母和数字下划线
    \s 空白字符 :空格换行回车制表位 换页
    \D [^0-9] 非数字
    \W [^a-zA-Z0-9_]
    \S 非空白字符

5)量词

{m}   m次
{m,}  最少m次
{m,n} m到n次
+  或 {1,} 最少一次
* 或 {0,}    0次或多次/任意次 
? 或{0,1}   0次到一次/0次或1次
  1. | 多个子表达式之间取“或”的关系
    ( ) 子字符集

7)转译字符
. 表示"."这个字符
\t \n
+ * ? ^ $ \

8)常用的正则

手机号:

/^[1][3458]\d{9}$/;  
           ^13\d{9}|15\d{9}$
           /^1[3584][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/

座机:
/^\d{3,4}-\d{7,8}$/; 010-11111111
邮箱:

			/^\w+@\w+(\.\w+)+$/  qiuyu@163.com.cn
           /^[0-9a-zA-Z](\w)+@(\w)+(\.)(com|cn|net|edu|com(\.)cn)$/

中文名字:
/^[\u4e00-\u9fa5]{2,4}$/; 名字由两位到四位
用户名:

 /^[a-z_][a-z_0-9]{5}$/i

互联网域名:
/^http:\/\/(\w+\.)?\w+\.com$/
邮编:
/^\d{6}$/; 六位数字
QQ:

			/^[1-9]\d{4,9}$/; 
           /^[1-9]\d{4,}$/    

密码:

/^\w{5,16}$/;
/^(\d|[a-zA-Z]|[_!#@*$]){3,15}$/;

自我介绍:
/^.{5,200}$/ 任意字符,5到200字
年龄:
/^([1-9]|[1-9][0-9]|100)$/ 1到100岁
身份证:

/^[1-9](\d{14}|\d{17}|\d{16}[xX])$/
	/^(\d{15}|\d{17}[xX0-9])$/

图片: /^.+\.(jpg|png)$/i

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //`

案例:验证添加页面

<script type="text/javascript">
  
  		var a=false;
  		var b=false;
  		var c=false;
  		var d=false;
  		var e=false;
  		var f=false;
  		var g=false;
  		var h=false;
  		function zc(){
  			//验证编号
  			var id=document.getElementById("id").value;
  			var rid=/^\d+$/;
  			if(rid.test(id)){
  				document.getElementById("id2").innerHTML="";
  				a=true;
  			}else{
  				a=false;
  				document.getElementById("id2").innerHTML="编号格式不正确";
  			}
  			
  			//验证姓名
  			var name=document.getElementById("name").value;
  			var rname=/^[\u4e00-\u9fa5]{2,20}$/;
  			if(rname.test(name)){
  				document.getElementById("name2").innerHTML="";
  				b=true;
  			}else{
  				b=false;
  				document.getElementById("name2").innerHTML="姓名必须为中文";
  			}
  			
  			//验证 密码
  			var pwd=document.getElementById("pwd").value;
  			var rpwd=/^[0-9]{6,8}$/;
  			if(rpwd.test(pwd)){
  				document.getElementById("pwd2").innerHTML="";
  				c=true;
  			}else{
  				c=false;
  				document.getElementById("pwd2").innerHTML="密码长度为6-8位数字";
  			}
  			
  			//验证 性别
  			var sex=document.getElementById("sex").value;
  			var rsex=/^(男|女)$/;
  			if(rsex.test(sex)){
  				d=true;
  				document.getElementById("sex2").innerHTML="";
  			}else{
  				d=false;
  				document.getElementById("sex2").innerHTML="性别只能是男和女";
  			}
  			
  			//验证 年龄
  			var age=document.getElementById("age").value;
  			var rage=/^(1[89]|[2-9][0-9])$/;
  			if(rage.test(age)){
  				e=true;
  				document.getElementById("age2").innerHTML="";
  			}else{
  				e=false;
  				document.getElementById("age2").innerHTML="年龄是18-99之间";
  			}
  			
  			//验证 手机号
  			var phone=document.getElementById("phone").value;
  			var rphone=/^1(31|51|38|36)\d{8}$/;
  			if(rphone.test(phone)){
  				f=true;
  				document.getElementById("phone2").innerHTML="";
  			}else{
  				f=false;
  				document.getElementById("phone2").innerHTML="手机格式不正确131xxxx|151xxxx|138xxxx|136xxxx)";
  			}
  			
  			
  			//验证 邮箱
  			var email=document.getElementById("email").value;
  			var remail=/^\w+@\w+(\.\w+)+$/;
  			if(remail.test(email)){
  				g=true;
  				document.getElementById("email2").innerHTML="";
  			}else{
  				g=false;
  				document.getElementById("email2").innerHTML="邮箱格式不正确XX@XX.XXX)";
  			}
  			
  			//验证 身份证
  			var idcard=document.getElementById("idcard").value;
  			var ridcard=/^[1-9]\d{16}[0-9Xx]$/;
  			if(ridcard.test(idcard)){
  				h=true;
  				document.getElementById("idcard2").innerHTML="";
  			}else{
  				h=false;
  				document.getElementById("idcard2").innerHTML="身份证一共是18位,第一位不能为0,最后一位为数字或X或x";
  			}
  		
  		}
  		function onsb(){
  			return a&&b&&c&&d&&e&&f&&g&&h;
  		}
  </script>
  <body>
  <form action="RegServlet"  method="post" onsubmit="return onsb();">
  	  编号<input type="text" id="id" name="id"><span id="id2"></span><br>
   	 姓名<input type="text" id="name" name="name"><span id="name2"></span><br>
           密码<input type="password" id="pwd" name="pwd"><span id="pwd2"></span><br>
          性别<input type="text" id="sex" name="sex"><span id="sex2"></span><br>
          年龄<input type="text" id="age" name="age"><span id="age2"></span><br>
          手机号<input type="text" id="phone" name="phone"><span id="phone2"></span><br>
          邮箱<input type="text" id="email" name="email"><span id="email2"></span><br>
           身份证<input type="text" id="idcard" name="idcard"><span id="idcard2"></span><br>
    <input type="submit" value="注册" onclick="zc();">
</form>
上一篇:outerHTML


下一篇:JS 显示方案(二)