基础系统的认识 - 正则表达式的用法和理解 JavaScript

97 阅读2分钟

正则表达式

            正则表达式 是 JavaScript中一种数据类型
            是 对于 字符串内容的验证语法

            所有的计算机程序 正则表达式语法都是完全相同的

            前端的验证规范 往往是根据后端数据库需求定义的
            

正则表达式的语法

            1,  字面量语法

                let 变量 = /正则表达式/ ; 
                    在 // 中 定义 正则表达式
                    推荐使用的语法形式

            2,  构造函数

                let 变量 = new RegExp( 正则表达式 );

        字面量语法形式 和 构造函数语法形式 有不同的 
              解析变量

                字面量语法 不能解析变量
                    需要 先通过 模板字符串 解析变量生成 正则表达式字符串
                    之后 使用 eval() 执行 正则表达式字符串 
                    
                    ! eval() 执行效率非常低 实际项目 不推荐使用 eval()

                
                构造函数语法 可以解析变量
                    构造函数语法 第一个参数 是 定义的正则表达式 
                        可以使用 模板字符串 直接解析变量 生成 对应的正则表达式

                    构造函数语法 第二个参数 是 修饰符 
                        'g'     全局匹配
                        'i'     大小写不敏感
                        
                        正则表达式      元字符
                        
                        

在正则表达式中 使用 特殊符号 表示 对应的验证规范

            \d      数字
            \D      非数字
            \w      数字 字母 下划线
            \W      非数字 字母 下划线
            \s      空格
                    js中 \n 是 解析为 空格
                    html语法中的   不能识别为空格

            \S      非空格

            .       任意内容 --- 非换行
                    如果 只有换行 结果是 false

            \       转义符
                \\  ---> \
                \'  ---> '
                \"  ---> "
                \.  ---> .
                \$  ---> $
                \n  ---> 换行

                    将冲突的内容进行转义

边界符 / 定界符

            ^   起始
            $   结束
            

限定符

            限定符是和边界符配合使用
            如果独立使用限定符 和 限定符边界符一起使用 效果不同

            *               0 至 正无穷个
            +               1 至 正无穷个
            ?               0 至 1 个
            {数字}          数字个
            {数字,}         数字 至 正无穷个
            {数字1,数字2}   数字1 至 数字2 个
    
            字符串 按照 0 个 内容计算
            

特殊符号

            |   逻辑或
                正则表达式 默认 都是 逻辑与的关系
                    \d{2}
                        数字 并且 数字个数是2个

            ()  将 () 中的内容作为一个整体判断

            []  包含任意一个都行
            

其它

            -   范围之间的内容就可以 也就是 谁 至 谁 之间的内容
                定义的内容必须是连续的内容不能跳跃定义
                [0-9]   任意数字
                [a-z]   任意小写英文字符
                [A-Z]   任意大写英文字符
                [a-zA-Z]   任意小大写英文字符
                [0-9a-zA-Z]   任意数字小大写英文字符
                [\u4e00-\u9fa5] 任意中文
                遵循 unicode 编码规范

            [^] 取反

        写在正则表达式//外的 标识符

            / /i
                忽略大小写  大小写不敏感
            / /g
                全局匹配

            一般是 配合 函数使用