4、DOM之正则表达式

正则表达式变量的test()函数可以用于检测、约束输入内容或字符串

正则表达式是用于描述 字符排列 和 匹配模式语法规则 的表达式
正则得组成: /^abc,w?$/修饰符
正则中的元字符
.代表除了换行符之外的任意一个字符
. 转义字符 只代表.
d 代表匹配一个数字 等价于 [0-9]
w 代表匹配一个字符 (字母、数字、下划线 ) 等价于[a-zA-Z0-9_]
^ 匹配开始
$ 匹配结束
正则中的量词
* 代表匹配任意个 大于等于0 等价于 {0,}
+ 代表匹配至少一个 大于等于1 等价于 {1,}
? 代表匹配0次或者1次 等价于 {0,1}
{a,} 代表匹配至少a次
{a,b} 代表匹配至少a次,最多b次 比如{2,6} 代表至少匹配2次,最多6次
{a} 代表匹配a次
w{2,6} 代表最少2个字符,最多6个字符
d{11} 代表必须11个数字
表示或 (条件1|条件2|条件3) 比如: (男|女)
比如比配acfge 不连续的值 使用 [acfge] 代表给定的字符集中匹配一个
如果是连续的值[abcdefgh]或者使用[a-h]
比如写一个规则,匹配至少6个数字,最多8个数字 ===》 /^d{6,8}$/
/^$/ : 代表必须匹配
// : 只代表包含
中文字符: [u4e00-u9fa5]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="fsasfasf" onsubmit=" return ck();">  <!--onsubmit 表单事件,如果里面返回false代表阻止表单的默认提交行为-->
        姓名:<input type="text" name="name" id="name"><span id="nameMsg" style="color: red;">2~20位中文字符</span><br>
        密码:<input type="text" name="password" id="password"><span id="passwordMsg" style="color: red;">6~8位数字</span><br>
        性别:<input type="text" name="sex" id="sex"><span id="sexMsg" style="color: red;">男/女</span><br>
        手机号:<input type="text" name="tel" id="tel"><span id="telMsg" style="color: red;">11位手机号</span><br>
        邮箱:<input type="text" name="email" id="email"><span id="emailMsg" style="color: red;">请输入正确的邮箱</span><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>
<script>
    function ck(){
        //校验姓名,匹配2~20位中文字符  [u4e00-u9fa5]
        var nameReg = /^[u4e00-u9fa5]{2,20}$/;
        //获取名字输入框的值
        var name = document.getElementById("name").value;
        //判断是否匹配,如果匹配返回true
        if (nameReg.test(name)) {
            // alert("用户名校验通过")
            //修改姓名错误信息的内容
            document.getElementById("nameMsg").textContent="正确"
            //操作js样式
            document.getElementById("nameMsg").style.color="green";
        }else {
            //alert("用户名校验失败")
            document.getElementById("nameMsg").textContent="2~20位中文字符"
            //操作js样式
            document.getElementById("nameMsg").style.color="red";
        }

        //获取密码的值
        var password = document.getElementById("password").value;
        //定义密码的规则 : 6~8位数字
        var passwordReg = /^d{6,8}$/;
        //进行规则校验
        if (passwordReg.test(password)) {
            // alert("密码校验通过")
            document.getElementById("passwordMsg").textContent="正确"
            //操作js样式
            document.getElementById("passwordMsg").style.color="green";
        }else {
            // alert("密码校验失败")
            document.getElementById("passwordMsg").textContent="6~8位数字"
            //操作js样式
            document.getElementById("passwordMsg").style.color="red";
        }

        var sex = document.getElementById("sex").value;
        var sexReg = /^(男|女)$/;
        if (sexReg.test(sex)){
            // alert("性别校验通过")
            document.getElementById("sexMsg").textContent="正确"
        } else {
            // alert("性别校验失败")
        }

        var tel = document.getElementById("tel").value;
        var telReg = /^1d{10}$/;
        if (telReg.test(tel)){
            // alert("手机号校验通过")
            document.getElementById("telMsg").textContent="正确"
        }else {
            // alert("手机号校验失败")
        }

        //邮箱 qq号@qq.com   .cn
        //  w+@w+.(com|cn|com.cn)
        //w{1,}@w{1,}.(com|cn|com.cn)
        var email = document.getElementById("email").value;
        var emailReg = /^w+@w+.(com|cn|com.cn)$/;
        if (emailReg.test(email)){
            // alert("邮箱校验通过")
            document.getElementById("emailMsg").textContent="正确"
        }else {
            // alert("邮箱校验失败")
        }


        return false;
    }
</script>

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="fsasfasf" onsubmit=" return ck();">  <!--onsubmit 表单事件,如果里面返回false代表阻止表单的默认提交行为-->
        姓名:<input type="text" name="name" id="name"><span id="nameMsg" style="color: red;">3~20位字符,以首字母开头</span><br>
        密码:<input type="text" name="password" id="password"><span id="passwordMsg" style="color: red;">6~8位数字</span><br>
        性别:<input type="text" name="sex" id="sex"><span id="sexMsg" style="color: red;">男/女</span><br>
        手机号:<input type="text" name="tel" id="tel"><span id="telMsg" style="color: red;">11位手机号</span><br>
        邮箱:<input type="text" name="email" id="email"><span id="emailMsg" style="color: red;">请输入正确的邮箱</span><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>
<script>
    function ck(){
        //定义计数器
        var count = 0;

        //校验姓名,
        var nameReg = /^[a-zA-Z]w{2,19}$/;
        //获取名字输入框的值
        var name = document.getElementById("name").value;
        //判断是否匹配,如果匹配返回true
        if (nameReg.test(name)) {
            // alert("用户名校验通过")
            //修改姓名错误信息的内容
            document.getElementById("nameMsg").textContent="正确"
            //操作js样式
            document.getElementById("nameMsg").style.color="green";
        }else {
            count ++;
            //alert("用户名校验失败")
            document.getElementById("nameMsg").textContent="3~20位字符,以首字母开头"
            //操作js样式
            document.getElementById("nameMsg").style.color="red";
        }

        //获取密码的值
        var password = document.getElementById("password").value;
        //定义密码的规则 : 6~8位数字
        var passwordReg = /^d{6,8}$/;
        //进行规则校验
        if (passwordReg.test(password)) {
            // alert("密码校验通过")
            document.getElementById("passwordMsg").textContent="正确"
            //操作js样式
            document.getElementById("passwordMsg").style.color="green";
        }else {
            count++;
            // alert("密码校验失败")
            document.getElementById("passwordMsg").textContent="6~8位数字"
            //操作js样式
            document.getElementById("passwordMsg").style.color="red";
        }

        var sex = document.getElementById("sex").value;
        var sexReg = /^(男|女)$/;
        if (sexReg.test(sex)){
            // alert("性别校验通过")
            document.getElementById("sexMsg").textContent="正确"
        } else {
            count++;
            // alert("性别校验失败")
        }

        var tel = document.getElementById("tel").value;
        var telReg = /^1d{10}$/;
        if (telReg.test(tel)){
            // alert("手机号校验通过")
            document.getElementById("telMsg").textContent="正确"
        }else {
            count++;
            // alert("手机号校验失败")
        }

        //邮箱 qq号@qq.com   .cn
        //  w+@w+.(com|cn|com.cn)
        //w{1,}@w{1,}.(com|cn|com.cn)
        var email = document.getElementById("email").value;
        var emailReg = /^w+@w+.(com|cn|com.cn)$/;
        if (emailReg.test(email)){
            // alert("邮箱校验通过")
            document.getElementById("emailMsg").textContent="正确"
        }else {
            count++;
            // alert("邮箱校验失败")
        }

        //判断计数器
        if (count > 0){
            alert("请正确输入")
            return false;
        }else {
            alert("校验都通过")
            return true;
        }


    }
</script><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="fsasfasf" onsubmit=" return ck();">  <!--onsubmit 表单事件,如果里面返回false代表阻止表单的默认提交行为-->
        姓名:<input type="text" name="name" id="name"><span id="nameMsg" style="color: red;">3~20位字符,以首字母开头</span><br>
        密码:<input type="text" name="password" id="password"><span id="passwordMsg" style="color: red;">6~8位数字</span><br>
        性别:<input type="text" name="sex" id="sex"><span id="sexMsg" style="color: red;">男/女</span><br>
        手机号:<input type="text" name="tel" id="tel"><span id="telMsg" style="color: red;">11位手机号</span><br>
        邮箱:<input type="text" name="email" id="email"><span id="emailMsg" style="color: red;">请输入正确的邮箱</span><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>
<script>
    function ck(){
        //定义计数器
        var count = 0;

        //校验姓名,
        var nameReg = /^[a-zA-Z]w{2,19}$/;
        //获取名字输入框的值
        var name = document.getElementById("name").value;
        //判断是否匹配,如果匹配返回true
        if (nameReg.test(name)) {
            // alert("用户名校验通过")
            //修改姓名错误信息的内容
            document.getElementById("nameMsg").textContent="正确"
            //操作js样式
            document.getElementById("nameMsg").style.color="green";
        }else {
            count ++;
            //alert("用户名校验失败")
            document.getElementById("nameMsg").textContent="3~20位字符,以首字母开头"
            //操作js样式
            document.getElementById("nameMsg").style.color="red";
        }

        //获取密码的值
        var password = document.getElementById("password").value;
        //定义密码的规则 : 6~8位数字
        var passwordReg = /^d{6,8}$/;
        //进行规则校验
        if (passwordReg.test(password)) {
            // alert("密码校验通过")
            document.getElementById("passwordMsg").textContent="正确"
            //操作js样式
            document.getElementById("passwordMsg").style.color="green";
        }else {
            count++;
            // alert("密码校验失败")
            document.getElementById("passwordMsg").textContent="6~8位数字"
            //操作js样式
            document.getElementById("passwordMsg").style.color="red";
        }

        var sex = document.getElementById("sex").value;
        var sexReg = /^(男|女)$/;
        if (sexReg.test(sex)){
            // alert("性别校验通过")
            document.getElementById("sexMsg").textContent="正确"
        } else {
            count++;
            // alert("性别校验失败")
        }

        var tel = document.getElementById("tel").value;
        var telReg = /^1d{10}$/;
        if (telReg.test(tel)){
            // alert("手机号校验通过")
            document.getElementById("telMsg").textContent="正确"
        }else {
            count++;
            // alert("手机号校验失败")
        }

        //邮箱 qq号@qq.com   .cn
        //  w+@w+.(com|cn|com.cn)
        //w{1,}@w{1,}.(com|cn|com.cn)
        var email = document.getElementById("email").value;
        var emailReg = /^w+@w+.(com|cn|com.cn)$/;
        if (emailReg.test(email)){
            // alert("邮箱校验通过")
            document.getElementById("emailMsg").textContent="正确"
        }else {
            count++;
            // alert("邮箱校验失败")
        }

        //判断计数器
        if (count > 0){
            alert("请正确输入")
            return false;
        }else {
            alert("校验都通过")
            return true;
        }


    }
</script>
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <form action="0000" onsubmit="return ck()">
 9     用户名:<input type="text" name="name" id="name"><span style="color: red" id="s1">3-20个字符,以字母开头</span><br>
10 密码:<input type="text" name="pass" id="pass" ><span style="color: red" id="s2">6-15个字符</span><br>
11 手机号:<input type="text" name="tel" id="tel" ><span style="color: red" id="s3">请输入合法的11位手机号</span><br>
12 邮箱:<input type="text" name="email" id="email" ><span style="color: red" id="s4">请输入合法的邮箱格式</span><br>
13 <input type="submit" value="提交">
14 </form>
15 <script>
16     function ck(){
17         var count=0;
18         var nameReg =/^[a-zA-Z]w{2,19}$/
19         var name=document.getElementById("name").value;
20         if (nameReg.test(name)){
21             document.getElementById("s1").textContent="正确";
22             document.getElementById("s1").style.color="green";
23         }else{
24             count++;
25             document.getElementById("s1").textContent="错误";
26         }
27 
28         var passReg=/^w{6,15}$/;
29         var pass=document.getElementById("pass").value;
30         if (passReg.test(pass)){
31             document.getElementById("s2").textContent="正确";
32             document.getElementById("s2").style.color="green";
33         }else{
34             count++;
35             document.getElementById("s2").textContent="错误";
36 
37         }
38 
39         var telReg=/^1d{10}$/;
40         var tel=document.getElementById("tel").value;
41         if (telReg.test(tel)){
42             document.getElementById("s3").textContent="正确";
43             document.getElementById("s3").style.color="green";
44         }else{
45             count++;
46             document.getElementById("s3").textContent="错误";
47 
48         }
49 
50         var emailReg=/^w+@w+.w+$/;
51         var email=document.getElementById("email").value;
52         if (emailReg.test(email)){
53             document.getElementById("s4").textContent="正确";
54             document.getElementById("s4").style.color="green";
55         }else{
56             count++;
57             document.getElementById("s4").textContent="错误";
58 
59         }
60         if (count==0){
61             return true;
62         }else {
63             return  false;
64         }
65 
66     }
67 
68 </script>
69 </body>
70 </html>

正则表达式
元字符:
d 代表匹配一个数字 等价于[0-9]
w 代表匹配一个字符 等价于[a-zA-Z0-9_]
量词:
+ 代表匹配至少一个 等价于{1,}
* 代表匹配任意个 等价于{0,}
? 代表匹配0个或者1个 等价于{0,1}

{a,} 代表至少出现a个
{a,b} 至少出现a个,最多出现b个
{a} 必须出现a个
代表或: (|)

正则表达式.test(值)

原文地址:https://www.cnblogs.com/chang09/p/15031986.html