正则表达式

正则目的: 实现字符的查找或检测,做一些表单验证,看用户输入是否正确,进行匹配

正则是什么: 用于匹配字符串的一种模式


目录

一、正则表达式

1.1、什么是正则表达式

1.2、语法

1.3 元字符(特殊字符)

1.3.1、相关参考文档

1.3.2、边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)

1.3.3、量词(重复次数)

1.3.4、字符类 ([a-z])

1.3.5、字符类中输入中文处理

1.3.6、字符类扩展

1.3.7、字符类的一些预定义

1.3.8、小总结

1.4、修饰符

总结




一、正则表达式

1.1、什么是正则表达式

>  表单验证: 用户表单只能输入英文字母,数字,下划线,昵称输入框中可以输入中文   (匹配)

>  比如用户名 :  /^[a-z0-9_-]{3,16}$/

>  过滤页面内容中的一些敏感词(替换

>  从字符串中获取我们想要的特定部分(提取


1.2、语法

举例: 

         比如查找下面文本是否包含字符串  ‘前端

 


1.3 元字符(特殊字符)

比如一般让用户只能输入26个英文字母,那我们编写估计就是从 abcdefg....开始

但是,换成元字符写法 : [a-z] 

1.3.1、相关参考文档

MDN查询: 正则MDN

正则测试工具:  正则在线测试工具

1.3.2、边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)

正则中的边界符,用来提示字符所处的位置,主要有两个字符

如果 $ ^ 这两个一起用 则是 精确匹配


    <script>
        console.log(/哈/.test('哈哈'));  // 返回true
        console.log(/哈/.test('二哈'));  // 返回true

        // ^  开头  必须以哈开头
        console.log(/^哈/.test('二哈'));  // false
        console.log(/^哈/.test('哈哈'));  // true

        // $ 结尾   必须以哈结尾
        console.log(/哈$/.test('哈儿'));  // false
        console.log(/哈$/.test('二哈'));  // true
        
        // ^ $ 合用   精确匹配 
        console.log(/^哈$/.test('哈哈'));  //false
        // 只有这样为true   
        console.log(/^哈$/.test('哈'));  //true 精确匹配
    </script>

1.3.3、量词(重复次数)

设定某个模式出现的次数

 注意:   逗号的左右两侧不要出现空格!

 以下为重点

    <script>
        // a只能出现三次 >3 <3都不行
        console.log(/^a{3}$/.test('')); // f
        console.log(/^a{3}$/.test('aa')); // f
        console.log(/^a{3}$/.test('aaa')); // t
        console.log(/^a{3}$/.test('aaaa')); // f
 
        console.log('.................');
        // {n,} 只能出现>=n 的次数
        console.log(/^a{3,}$/.test('')); // f
        console.log(/^a{3,}$/.test('aa')); // f
        console.log(/^a{3,}$/.test('aaa')); // t
        console.log(/^a{3,}$/.test('aaaa')); // t

        console.log('.................');
        // {n,m} 只能出现  >=n && <= m   的次数
        console.log(/^a{3,6}$/.test('')); // f
        console.log(/^a{3,6}$/.test('aa')); // f
        console.log(/^a{3,6}$/.test('aaa')); // t
        console.log(/^a{3,6}$/.test('aaaaaa')); // t
        console.log(/^a{3,6}$/.test('aaaaaaa')); // f
    </script>

1.3.4、字符类 ([a-z])

【】 匹配字符集合  -- 在括号里面的任意字符

  • 后面的字符只要包含abc中任意一个字符 都返回true
    <script>
        // 包含 a b c中任何一个
        console.log(/[abc]/.test('abc')); // t
        console.log(/[abc]/.test(''));    // f
        console.log(/[abc]/.test('die')); // f
    </script>

【】里面加上 - 连字符

  • 使用 - 连字符 表示一个范围
console.log(/^[a-z]$/.test('c'));   // 返回true  包含a-z中任意一个都行
    <script>
        // 包含 a b c中任何一个
        console.log(/[abc]/.test('abc')); // t
        console.log(/[abc]/.test(''));    // f
        console.log(/[abc]/.test('die')); // f
        console.log('-----------');
        console.log(/^[abc]$/.test('a')); // t
        console.log(/^[abc]$/.test('b')); // t
        console.log(/^[abc]$/.test('c')); // t

        // 只有这三种返回真
        console.log(/^[abc]$/.test('abc')); // f
        console.log('------------');

        // 26个英文字母 选 其中一个
        console.log(/^[a-z]$/.test('abc'));
        console.log(/^[a-z]$/.test('a')); // t
        console.log(/^[a-z]$/.test('A')); // f

        // 有大小写限制
        console.log('------------');
        // 大小写不限
        console.log(/^[a-zA-Z]$/.test('a')); // t
        console.log(/^[a-zA-Z]$/.test('A')); // t
        
        // 可以小写 可以大写 可以出现数字
        console.log('------------');
        console.log(/^[a-zA-Z0-9]$/.test('A'));
        console.log(/^[a-zA-Z0-9]$/.test('a'));
        console.log(/^[a-zA-Z0-9]$/.test('4'));
    </script>

【a-zA-Z0-9-_】 表示大小写英文字母 数字0-9 并且支持 输入 - (连字符)和 _ (下划线)

输入要求: > = 10000

量词{4,}只针对于 前面一个字符

        // 格式
        console.log(/^[1-9][0-9]{4,}$/.test('10000')); // t
        console.log(/^[1-9][0-9]{4,}$/.test('1000')); // f
        console.log(/^[1-9][0-9]{4,}$/.test('100000')); // t

用户表单验证

要求:

<body>
    <input type="text">
    <span></span>
    <script>
        // 要求用户名由 英文字母、数字、下划线、短横线组成
        // 并且用户名长度为 6 ~ 16 位
        // 表单验证格式: /^[a-zA-Z0-9_-]{6,16}$/
        let input = document.querySelector('input')
        let span = document.querySelector('span')
        let ra = /^[a-zA-Z0-9-_]{6,16}$/

        // 失去焦点  blur
        input.addEventListener('blur',function () {
            if(ra.test(input.value)){
                span.innerHTML = `输入有效`
                // 先清楚
                span.classList.remove('error')
                span.classList.add('right')
            }else{
                span.innerHTML = `用户名长度为 6 ~ 16 位`
                span.classList.remove('right')
                span.classList.add('error')
            }
        })
        console.log(/^[a-zA-Z0-9_-]{6,16}$/.test('aaaaa_-'));
    </script>
</body>

1.3.5、字符类中输入中文处理

需要用户只能输入中文

  • 语法:
let ra = /^[\u4e00-\u9fa5]{2,8}$/

昵称 :2-8位的中文名字 都返回true


1.3.6、字符类扩展

(1) 在【】里面加上 ^ 取反符号 表示 除 ...之外

/ ^[  ] / 这样是开头

(2) . 匹配除换行符之外的任何单个字符


1.3.7、字符类的一些预定义

指的是某些常见模式的简写方式

    <script>
        // 日期格式的简写写法
        console.log(/^\d{4}-\d{1,2}-\d{1,2}/.test('2022-10-29'));
        console.log(/^\d{4}-\d{1,2}-\d{1,2}/.test('2022-10-'));
        console.log(/^\d{4}-\d{1,2}-\d{1,2}/.test('2022-10-29 10:00AM'));
    </script>


1.3.8、小总结


1.4、修饰符

约束正则表达式某些细节的行为,如是否区分大小写、是否支持多行匹配等

一般搭配 字符串替换使用  字符串.replace  (/正则/,'替换的文本')

案例:

        替换词语

这种方式只能替换第一个 ‘激情’

在后面加一个 g

补充

 


总结

正则掌握一点基本的语法,具体难得部分只需上网查找即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值