zoukankan      html  css  js  c++  java
  • 正则表达式

    简单实例来一个

    var str = "123abc";
    var patt1 = /^[0-9]+abc$/;
    console.log(str.match(patt1)[0]);

    匹配前面是数字并且以abc结尾的字符串(123abc)

    // 正则表达式概念
        // 正则表达式使用单个字符串来描述,匹配一系列符合某个句法规则的字符串搜索模式
        // 用某种模式去匹配一类字符串的公式
    
        // 语法 (构造正则)
        //方法1、 构造函数:var reg=new RegExp("正则表达式","修饰符");   reg--regular:规则  exp--expression:表达
        //方法2、 var reg=/正则表达式/修饰符;(常用方法)    pattern:典范、模式    modifiers:修饰语
    
        // 修饰符
        //  i  :执行对大小写不敏感的匹配
        //  g  :执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
        //  m  :执行多行匹配
        // 例子
        // 创建一个要检测的变量
        var str="abc";   //26个英文字母   a-z
        // 创建一个正则
        var regular=/[a-z]/;
        // 检测 方法1
        console.log(regular.test(str));//true   返回值为true时,代表匹配   返回值为false时,代表不匹配
        // 检测  方法2
        console.log(regular.exec(str));// ["a",index:0,input:"abc"]
        // 次检测方法返回的是一个数组
        // 数组的第一个元素:匹配的内容
        // 数组的index元素:匹配内容的第一个字符串索引下标
        // 数组的input元素:返回原始字符串
        // 检测一个字符串是否与正则相匹配   返回的值为布尔值
        // 方法1: reg.test(string);    reg是创建的正则表达式    test:实验,测验
        // 方法2:  reg.exec(string);
    
        // 正则表达式的方法
        // string类中支持正则的方法
        /*search()方法-使用正则表达式来检索字符串中的kgc*/
        /*match()方法-使用正则表达式来检索字符串中的所有数字*/
        /*replace()方法-使用"kgc"替换字符串中的"huyang"*/
        /*split()方法-把单词分隔为字母*/
        /*验证26个英文字母组成的字符串*/
        /*验证由数字和26个英文字母组成的字符串*/
    
        // search()的用法  检索字符串中的字符
        var str="hello kgc";
        console.log(str.search(/kgc/));//6    代表此字符串的下标是6
        console.log(str.search(/KGC/));//-1   代表不存在
        console.log(str.search(/KGC/i));//6    加了i之后  i是修饰符,代表执行对大小写不敏感的匹配
        // search();若找到 返回字符串的下标  若没找到返回-1
    
        // match()的使用方法   检索字符串中的所有数字
        var str="1 and 2 and 3";
        console.log(str.match(/d/));//["1",index:0,input:"1 and 2 and 3"]   d:代表数字
        console.log(str.match(/d/g));//["1","2","3"]    加了g只后, g是修饰符,代表执行全局匹配
        console.log(str.match(/kgc/));//null   若不存在,返回null
        // 如果没有找到任何匹配的文本,返回null。否则,它将返回一个数组(依赖于是否具有全局标志g)
    
        // replace()的用法   用新字符串替换字符串中的字符产生一个新字符串
        var str="hello huyang";
        console.log(str.replace(/huyang/,"kgc"));//hello kgc
        var str="hello huyang,how are you?huyang";
        console.log(str.replace(/huyang/g,"kgc"));//hello kgc,how are you?kgc
        // 返回一个新的字符串
    
        // split()的使用方法   把单词分隔成字母
        var str="hello";
        console.log(str.split(""));//["h","e","l","l","o"]
        console.log(str.split("",3));//["h","e","l"]   3代表只要前3个字符
        console.log(str.split(" "));//["hello"]
        console.log(str.split("1"));//["hello"]
    
    
        // 常用的表达式
        // [a-z] :查找任何从小写a到小写z的字符
        // [A-Z] :查找任何从大写A到大写Z的字符
        // [0-9] :查找任何从0至9的数字
        // [abc]  :查找括号内的任意一个字符   abc:代表任何字符
        // [^abc] :查找括号内的任意字符
    
        // var reg=/^[a-zA-Z]$/  这里的^  $ :代表从^开始 到$结束
    
        // 常用的元字符(特殊字符)
        // w :匹配数字、字母,下划线        等价于[a-zA-Z0-9]
        // W :匹配非数字、字母、下划线    等价于[^a-zA-Z0-9]
        // d :匹配数字
        // D :匹配非数字
        // s :匹配空白字符(空格、换行)
        // S :匹配非空白字符
        // 
     :匹配换行符
    
        // 常用的限定符
        // * :匹配前面的子表达式零次或多次
        // + :匹配前面的子表达式一次货多次
        // ? :匹配前面的子表达式零次或一次
        // {n} :匹配确定的n次
        // {n,} :至少匹配n次
        // {n,m} :最少匹配n次且最多匹配m次
    
    
        // 练习
        /*验证26个英文字母组成的字符串*/
        var str="sdaAHSHsffsefsRFGDGDefgs";
        var reg=/[a-zA-Z]/;
        var reg1=/^[a-zA-Z]$/;   //从^开始$结束   只能匹配一次  所以返回false
        var reg2=/^[a-zA-Z]+$/;  //+代表匹配一次或多次
        console.log(reg.test(str));//true
        console.log(reg1.test(str));//false
        console.log(reg2.test(str));//true
    
        /*验证由数字和26个英文字母组成的字符串*/
        var str="1232fdss3343r5rfdsf";
        var reg=/^[a-zA-Z0-9]+$/;
        console.log(reg.test(str));//true
    
        /*验证由数字字母下划线组成的字符串*/
        var str="123a_v_f";
        var reg=/^w+$/;  // w:匹配数字、字母、下划线
        console.log(reg.test(str));//true 
    
        /*验证汉字*/
        var str="我是汉字";
        var reg=/^[u4e00-u9fa5]+$/;
        console.log(reg.test(str));//true
        // [u4e00-u9fa5]   代表汉字   记忆方法:有事100,有酒罚我

    自创一个匹配规则:

    只要含有@符(@符号可以出现一次或多次)

        var str = "12@3abc";
        var patt1 = /@+/;
        console.log(patt1.test(str));

     手机号:

    /^1[3456789]d{9}$/.test(value)

    邮箱:

    var emailReg = new RegExp(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/); //邮箱验证

     匹配一个字符串 是否存在

    regMatch(reg,str){//匹配reg是否出现在str内
                reg=new RegExp(reg);
                if(str.search(reg)>=0){
                    return true;
                }else{
                    return false;
                }
            }

    使用:

    console.log(regMatch("中宾",str));
    [^xyz]
    负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。

     。

    // 匹配字符串中的数字  且将数字统一删除
            let str = 'abcd1 dsfdfds3  fdfsfdsf6';
            let reg = /d/g;
            let noNum = str.replace(reg,(result,index)=>{
                console.log(result,index);
                return result.replace(/d/,'')
            })
            console.log(str);
            console.log(a);

  • 相关阅读:
    继承
    redis面试题收集
    spring知识点
    jvm类加载
    jvm回收机制
    HashMap和ConcurrentHashMap
    java基础
    spring-quartz整合
    alibaba-sentinel-1.8变化
    springcloud执行流程理解图
  • 原文地址:https://www.cnblogs.com/fqh123/p/11407864.html
Copyright © 2011-2022 走看看