正则表达式

简单实例来一个

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);

原文地址:https://www.cnblogs.com/fqh123/p/11407864.html