正则匹配 基础

^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\d{8}$
解释:
^:代表起始,即手机号码只能以1为开头
3[0-9]:代表手机号码第二位可以是3,第三位可以是0-9中任意一个数字
5[0-3,5-9]:代表手机号码第二位也可以是5,第三位是0-35-9中的任意一个数字
在这里,以3开头的,以5开头的,以及以8开头的三种情况,我们用“|”来将他们隔开
\d:匹配一个数字字符,等价于 [0-9]
$:终止符,代表不可以再有第12位了

参考:https://www.cnblogs.com/tandaxia/p/4385746.html


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    参考:https://www.cnblogs.com/whaozl/p/5462865.html
    正则三种用法
    1.判断数据是否合法--表单提交校验
    2.字符串替换--replace
    3.字符串截取--match(全局) exec(局部)
    <!-- <input type="text" oninput="change(this)"> -->
    <textarea name="" id="" cols="30" rows="10" oninput="change(this)"></textarea>
    <script>
        // 正则使用 判断符合规则  ----replace 替换

        // /abc/g 自变量声明          /^1/ 
        // new RegExp(abc) 函数声明   new RegExp(^1)  后台返回匹配规则匹配 
        // \ 转义字符  *通配符  g全局  i匹配前面
        // replace() // 匹配替换  exec  匹配数组(一个匹配 一个不匹配)  match 匹配返回的(所有)  search
        function change(val) {
            var value = val.value
            // console.log(/^1/.test(value))              // 以什么开头
            // console.log(new RegExp('^1').test(value))  // 以什么结尾

            //console.log(/3$/.test(value))               // 以什么结尾

            // console.log(/1 */.test(value))             //注意空格  0->多次

            // console.log(/1+/.test(value))                     // 没有空格 1->多次
            // console.log(/李太?白/.test(value))                //李白”或者“李太白”
            // console.log(/times?/.test(value))                 //time或者times
            // console.log(/1{2}/.test(value))                   // {} 表示几个数连续数

            // console.log((value).replace(/1{1,2}/, 'xx'))         // m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

            // console.log(/1{2,}/.test(value))                     // {n,}至少匹配n次
            // console.log((value).replace(/1{2,}/i, 'xx'))   console.log((value).replace(/1{2,}/g, 'xx'))

            // ? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的 没有加的都是贪婪模式

            // console.log(value.replace(/o+?/, 'sss'))                //非贪婪(尽可能少匹配 i) 贪婪(尽可能多匹配 g)

            //console.log(/^a{2}.b{2}/.test(value))                          // . 代表除了 \n字符以外的任何字符

            //console.log(/(1|2){2}/.test(value))                            // | 表示或的   1或2 2个  

            //console.log(/[abc]/.test(value))                                 // [abc]表示abc其中一个

            //console.log(/[^abc]/.test(value))                                  // [^abc]表示abc中没有一个
            //console.log(value.replace(/[^abc]/, 'sss'))

            //console.log(/[a-z]/.test(value))                                     // [a-z]指定范围任意数据

            // console.log(/[^1-2]/.test(value))                                      // [^1-2] 除了1,2以外的所有的数据  

            //console.log(/\d/.test(value))                                            //  \d 表示匹配[1-9]
            //console.log(/^\d/.test(value))                                             // 开头是 数字

            //console.log(/\D/.test(value))                                              // \D表示匹配 [^1-9]


            // console.log(value.replace(/\n/, 'sss'))                                  //表示 \r 回车字符  \n 换行   \s 表示空白字符
            // console.log(/\S/.test(value))                                               // 除了空格以外的

            //console.log(/\w/.test(value))                                                  // \w 表示匹配 [A-Za-z0-9_] 
            //console.log(/\W/.test(value))                                              //\W 表示匹配非[A-Za-z0-9_]

            //console.log(/\b/.test(value))                                                                //\b单词(拼音)匹配 \B汉字进行匹配
            //console.log(/\B/.test(value))

            //console.log(/^(food)/.test(value))                                           // ()表示整体匹配

            //----------------------------------------------------------------------------------------------------------
            // console.log(value.replace(/^(?:foo)/, 'zzz'))
            // console.log(value.replace(/^(food)/, 'sss'))

            // var m = "abcabc".match(/(?:a)(b)(c)/)
            //结果 ["abc", "b", "c"]
            // m[0] 是/(?:a)(b)(c)/匹配到的整个字符串,这里包括了a
            // m[1] 是捕获组1,即(b)匹配的子字符串substring or sub sequence
            // m[2] 是捕获组2,即(c)匹配到的

            // var m = "abcabc".match(/(a)(b)(c)/)
            //结果 ["abc", "a", "b", "c"]


            //console.log(/jack(?=Sprat|aaa)/.test(value))                                                     // x(?=y) 表示匹配后后面跟整体数据 匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言。
            // console.log(/jack(Sprat|aaa)/.test(value))


            // var m = "jackabcabc".match(/jack(?=a)/)
            // console.log(m)
            //结果 [jack]


            // var m = "jackabcabc".match(/jack(a)/)
            // console.log(m)
            //结果 ["jacka"]


            //console.log(/(?<=aaa|bbb)bbb/.test(value))

            //var m = 'aaabbb'.match(/(?<=aaa|bbb)bbb/)                                                         // (?<= y)x 字符提前的匹配 匹配'x'仅仅当'x'前面是'y'.这种叫做后行断言。
            // console.log(m)
            // 结果["bbb"]

            // var m = 'aaabbb'.match(/(aaa|bbb)bbb/)
            // console.log(m)
            // ["aaabbb", "aaa"]

            // x(?!y)表示匹配后面的 仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找。(全局匹配 带点数据后面都没匹配 没带点的后面都匹配了)
            // let a = "3.1.4";
            // let b = /\d+(?!\.)/.test(a);
            // console.log(b)

            // var m = '3.1.4'.match(/\d+(?!\.)/)
            // console.log(m)
            // [4]

            // var m = '3.1.4'.match(/\d+(\.)/)
            // console.log(m)
            // [3,.]

            // console.log(/(?<!-)\d+/.test(-3))// (?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查

            // var m = '-6'.match(/(?<!-)\d+/)
            // console.log(m)
            // [null]

            // var m = '-66'.match(/(?<!-)\d+/)
            // console.log(m)
            // [6]

            // (exp) 匹配exp,并捕获文本到自动命名的组里
            // (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
            // (?:exp) 匹配exp,不捕获匹配的文本
            // 位置指定
            // (?=exp) 匹配exp前面的位置
            // (?<=exp) 匹配exp后面的位置
            // (?!exp) 匹配后面跟的不是exp的位置
            // (?<!exp) 匹配前面不是exp的位置


            // var str = " fee fi fo fum ";
            // var myArray = re.exec(/\w+\s/g);
            // console.log(myArray);


            // match 能匹配的所有数据返回的正则
            // var re = /\w+\s/g;
            // var str = " fee fi fo fum ";
            // var myArray = str.match(re);
            // console.log(myArray);

            //search 字符串的搜索的索引
            // let a = "abcc.daefc";
            // let c = a.search(/(.)\1{1,}/)//连续匹配的字符串
            // console.log(c);


            // console.log(/^[a-zA-Z]{7}$/.test(value)) //长度限制
            // console.log(/^[a-zA-Z]{5,7}$/.test(value)) //长度范围
            // console.log(/^[a-zA-Z]{5,}$/.test(value)) //最小长度


            // 手机号  
            // console.log(/^1[3456789]\d{9}$/.test(value))
            // 用户名



        }

    </script>
</body>

</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web修理工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值