zoukankan      html  css  js  c++  java
  • 那些年我遇到过的正则表达式

    正则感觉用得少,至少对于我来说,虽然系统性的学习过,可是,老了,还是容易忘,所以打算以后把我遇到过的都整理在此,以作自己巩固参考。

    1.把"kl$100.08"转成100.08

    这个就是从一个字符串中截取浮点数。

    console.log("kl$100.08".replace(/[^{(0-9),{.}}]/ig,"")); // 100.08

    例子实验:

    // 1).过滤出一个字符串中的数字
    var string1 = '#@1.309$';
    //把所有不是数字不是.也不是$的字符替换成空字符串
    //i : ignore g: global
    var str1 = string1.replace(/[^d,^{.},^{$}]/ig, '');
    var str1_1 = string1.replace(/[^d,{.},{$}]/ig, '');
    console.log(str1); // 1.309$
    console.log(str1_1); // 1.309$
    var str1_11 = string1.replace(/[^{d,{.},{$}}]/ig,''); // 这个算是标准写法把!!!
    console.log(str1_11); // 1.309$
    //把所有数字和.替换成字母t
    var str1_2 = string1.replace(/[d,{.}]/ig,'t');
    console.log(str1_2); //#@ttttt$

    //2).找到第一个出现数字的位置
    var string2 = 'fdjk@1.23efj';
    console.log(string2.search(/d/)); // 5

    //3).三个数字连着的
    var string3 = 'tyd35h345fsa';
    var str3 = string3.match(/ddd/g);
    console.log(str3); //["345"]

    //4).若干个数字
    var string4 = 'hs5624mf734f32f5dd0';
    var str4 = string4.match(/d+/g);
    console.log(str4); // ["5624", "734", "32", "5", "0"]

    //5).除了大写字母和数字以外的
    var string5 = '#jTyhT$T78s0s';
    var str5 = string5.replace(/[^d,^A-Z]/g,'Q');
    console.log(str5); // QQTQQTQT78Q0Q

    //6).除了小写字母和数字以外的
    var string6 = '#jTyhT$T78s0s';
    var str6 = string6.replace(/[^a-z,^d]/g,'H');
    console.log(str6); // HjHyhHHH78s0s

    2.两个特别的字符: '^' 和 ‘$' 

    在项目中遇到了下面这段代码,硬是看了半天没看懂正则到底说的啥,结果发现自己把^理解成‘非’的含义了。

    后来网上查了一下才知道,'^' 和 ‘$' 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:

    "^The": 匹配以 "The"开头的字符串;
    "of despair$": 匹配以 "of despair" 结尾的字符串;
    "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配
    "notice": 匹配包含notice的字符串

    遇到的代码:

    1 function getStatus(name) {
    2     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    3     var r = window.location.search.substr(1).match(reg);
    4     if (r !== null) return unescape(r[2]);
    5     return null;
    6 };

    所以,现在也就能理解了,其中的var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");是用来获取页面url的某个url参数的方法。

    (^|&)这个是匹配以&开头或前面没有字符的内容。([^&]*)表示不包含&的任意个字符。(&|$)表示以&结尾或者后面没有字符的内容。

    这个正则是寻找     & + url参数名字 = 值 + &; &可以不存在。
    var r = window.location.search.substr(1).match(reg);
    if (r !== null) return unescape(r[2]);
    return null;
    这里是开始匹配,找到了返回对应url值,没找到返回null.

    例子实验:

    //7).^ 和 $ 分别用来匹配字符串的开头和结束
    // ^匹配开头,注意与‘非’区分开
    var testStr1 = 'mabcde123';
    var testStr2 = 'abcde123';
    var testStr3 = '12ab34cd';
    //匹配以ab字符串开头的字符串,如果匹配到了就返回字符串构成的数组,没匹配到就返回null
    console.log(testStr1.match(/(^ab)/g)); // null
    //把以字符串m开头的字符替换成M
    console.log(testStr1.replace(/(^m)/g,'M')); // Mabcde123
    //把不是字符m的所有字符替换成M
    console.log(testStr1.replace(/[^{m,c}]/g,'M')); // mMMcMMMMM
    //把不是字符m的所有字符替换成M
    console.log(testStr1.replace(/[^m,^c]/g,'M')); // mMMcMMMMM
    //把所有不是小写字母的字符替换成6
    console.log(testStr1.replace(/[^a-z]/g,'6')); // mabcde666
    //把以小写字母开头的字符替换成6
    console.log(testStr1.replace(/^[a-z]/g,'6')); // 6abcde123
    //匹配以ab字符串开头的字符串,如果匹配到了就返回字符串构成的数组,没匹配到就返回null
    console.log(testStr2.match(/(^ab)/g)); // ["ab"]
    //把所有非数字字符替换成T
    console.log(testStr3.replace(/[^d]/g,'T')); // 12TT34TT
    //把所有非数字字符替换成T
    console.log(testStr3.replace(/[^0-9]/g,'T')); //12TT34TT
    //把以数字开始的字符替换成T
    console.log(testStr3.replace(/^[d]/g,'T')); // T2ab34cd
    //把以数字开始的字符替换成T
    console.log(testStr3.replace(/^[0-9]/g, 'T')); //T2ab34cd

  • 相关阅读:
    1.27
    1.25
    Representation Learning with Contrastive Predictive Coding
    Learning a Similarity Metric Discriminatively, with Application to Face Verification
    噪声对比估计(负样本采样)
    Certified Adversarial Robustness via Randomized Smoothing
    Certified Robustness to Adversarial Examples with Differential Privacy
    Dynamic Routing Between Capsules
    Defending Adversarial Attacks by Correcting logits
    Visualizing Data using t-SNE
  • 原文地址:https://www.cnblogs.com/xiayu25/p/6398328.html
Copyright © 2011-2022 走看看