美文网首页
正则表达式

正则表达式

作者: 阿亮2019 | 来源:发表于2018-05-30 11:14 被阅读11次

    https://www.jianshu.com/p/d771828f8fd4 写的很赞~

    \d{6} \s+ 不要忘了前面的斜杠,老是忘!!!!!

    正则表达式用来匹配字符串
    ^ 表示字符串的开始
    $ 表示字符串的结束
    [] 表示可以是其中一个 例如: [a-zA-Z]表示大写小写字母中的一个,但是不能没有
    + 表示至少一个
    * 0个或多个

    \d 只能匹配 一个 数字 // 注意前面一个\不能少
    \d{n} 匹配 n个 数字
    \d{n, m} 匹配 n到m个 数字,其中n < m。比如 /\d{3,5}/.test('1234567')为true;
    \w 匹配 一个 字母或数字
    \w{n} 匹配 n个 字母或数字
    \w{n, m} 匹配 n到m个 字母或数字,其中n < m。
    \s 表示一个空格
    \s+ 表示至少一个空格
    | 表示或关系 比如实现trim操作: string.replace(/^\s+|\s+$/g, '')
    . 表示可以匹配任意 一个字符,但不能没有,

    reg = /^zs.$/;
    reg.test('zs'); false
    reg.test('zsl'); true
    

    * 表示0次或多次
    匹配前一个表达式0次或多次。等价于 {0,}。
    例如,/bo*/会匹配 "A ghost boooooed" 中的 'booooo' 和 "A bird warbled" 中的 'b',但是在 "A goat grunted" 中将不会匹配任何东西。

    邮箱正则:

    // test case
    // shengliang.zheng@owitho.com
    // 1004721118@qq.vip.com
    // zhengshl2012@153.com
    ^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$;
    

    工作中

    // 黄大佬做法
    const buyLinkReg = new RegExp(`^https?:\/\/${API_ORIGIN_NO_PROTOCOL}\/openrack\/(\\w{8}(-\\w{4}){3}-\\w{12}?)\/buy$`, '');
                
    if (buyLinkReg.test(value)) {
        this.setState({
           [name]: value.trim().replace(buyLinkReg, '$1')
        } );
    }
    
    // 我的做法
    export function BuyLinkUUIDReg(buyLink: string): string {
        const reg = /\w{8}(-\w{4}){3}-\w{12}/;
        const res = buyLink.match(reg);
        if (res && res[0]) {
            return res[0];
        } else {
            return '';
        }
    }
    

    test和exec的区别

    image.png
    exec成功返回一个数组,数组key为0的value值则是匹配的值,index值为下标;失败返回null,
    const str = 'fdfjlsd-4-dj-5-fglds-3-fj';
    const reg = /\d/;
    
    const res = reg.exec(str);
    console.log(str); // fdfjlsd-4-dj-5-fglds-3-fj
    console.log(res); // []
    
    const res2 = reg.exec(str);
    console.log(str);  // fdfjlsd-4-dj-5-fglds-3-fj
    console.log(res2); [] 跟上面的值
    
    // replace用法1  句子中替换词语
    var p = 'lazy dog, was it really lazy?';
    var regex = /dog/gi;
    console.log(p.replace(regex, 'ferret')); // "lazy ferret, was it really lazy?"
    console.log(p); //  'lazy dog, was it really lazy?'; 不变
    
    // replace用法2  更换日期
    const date = '09/22/2018';
    const reg = /(\d{2})\/(\d{2})\/(\d{4})/;
    console.log(reg.test(date));
    
    console.log(date.replace(reg, '$3-$1-$2'));
    

    廖雪峰 正则表达式

    相关文章

      网友评论

          本文标题:正则表达式

          本文链接:https://www.haomeiwen.com/subject/rljtsftx.html