zoukankan      html  css  js  c++  java
  • 正则表达式的学习与深化笔记

    题记:入行不久,正则是个很关键的知识点,利用几天的业余时间学习却发现效率不高。还是边学边总结吧,也为和我具有类似情况的同鞋们提供一个参考。

    总原则:实例配合理论,以理论创建实例,以实例验证理论,理论结合实例透彻理解正则灵活应用正则。

    正则两个作用:模式匹配、模式替换。

    定义:var pattern = /s$/    等价于   var pattern = new RegExp("s$")

    $匹配字符串的结尾,多行检索中匹配一行的结尾

    实例1:判断一个字符串是否以“s”结尾 / 将尾部的“s”替换成“--s”

    var pattern = /s$/ ;

    alert(pattern.test('https'));//true

    alert(pattern.test('http'));//false

    alert('https'.replace(pattern,'--s')); //http--s

    alert('http'.replace(pattern,'--s'));//http

    ?? 多行检索的实例不知道是什么,求指教!!

    ^匹配字符串的开头,多行检索中匹配一行的开头。

    实例2:去除字符串开头和结尾的空格

    alert('-'+' 你好 '.replace(/(^\s*)|(\s*$)/g, "")+'-'); //-你好-

    \s 任何Unicode空白的字符(全角和半角空格)

    | 分组选择,或,在上例中表示“字符串开始的空格或字符串结尾的空格,替换成空字符串”

    () 组合,将几个项组合为一个单元

    * 匹配前一项零次或多次,在上例中如果不使用此符号,只能去掉开口的第一个空格和结尾的最后一个空格

    alert('-'+'   你好     '.replace(/(^\s)|(\s$)/g, "")+'-'); //-  你好    -

    g 正则中的修饰符,执行一个全局匹配(找到所有匹配,而不是找到一个之后就停止)

    alert('-'+' 你好     '.replace(/(^\s*)|(\s*$)/, "")+'-'); //-你好    -

    实例3:替换连续的字符串片段

    i 正则中的另一个修饰符,执行不区分大小写的匹配

    alert('JavaScript has no relationship with Java'.replace(/java/ig, "$"));

    //$Script has no relationship with $

    上例中修饰符/g和/i可以互换位置不影响结果,如:

    alert('JavaScript has no relationship with Java'.replace(/java/gi, "$"));

    正则中的修饰符:i , g , m(启用多行匹配模式,^和$匹配每一行的开始和末尾)

    实例4:替换单词

    alert('JavaScript has no relationship with Java'.replace(/\bjava\b/ig, "$"));

    //JavaScript has no relationship with $

    \b 匹配一个单词的边界

    \B 匹配非单词边界的位置

    alert('JavaScript has no relationship with java'.replace(/\bjava\B/ig, "$"));

    //Java$ has no relationship with $Java

    正则中的锚字符 --- 指定匹配位置:^  $  \b  \B  (?=p)   (?!p)

    RegExp 对象

    5个属性:.source   .global    .ignoreCase   .multiline   lastIndex

    2个方法:.exec()    .test()

    遇到的时候结合实例再讲吧...

    常用场景解读:

    场景1:QQ号

    /^[^0][0-9]{4,9}/或者/^[1-9][0-9]{4,9}/

    QQ号最少5位,最多10为(最起码当前是),第一位不能是0,后面是数字的4-9位的任意组合

    学点记要:^放在中括号外匹配开头,放在中括号内表示排除式匹配

    场景2:待续。。

  • 相关阅读:
    opencv 5 图像转换(1 边缘检测)
    opencv 4 图像处理(漫水填充,图像金字塔与图片尺寸缩放,阈(yu)值化)
    opencv 4 图像处理(2 形态学滤波:腐蚀与膨胀,开运算、闭运算、形态学梯度、顶帽、黑帽)
    HDU 1847-Good Luck in CET-4 Everybody!-博弈SG函数模板
    网络流
    multiset的erase()操作中出现跳过元素的问题
    HRBUST
    L1-8 矩阵A乘以B (15 分)
    L2-2 重排链表 (25 分)
    L2-4 部落 (25 分)
  • 原文地址:https://www.cnblogs.com/longze/p/2942282.html
Copyright © 2011-2022 走看看