zoukankan      html  css  js  c++  java
  • RegExp入门笔记

    前言:

      一开始我是拒绝学正则表达式的,暑假看慕课上的PHP进阶课程里有一章是专门讲正则,然后我思考的几秒钟,就略过了。理由和大家一样,畏惧,听很多人说正则很难,然后就果断放弃。但是昨天看到知乎上有个话题,问大家为什么不喜欢正则,然后看到下面很多大神说正则处理字符串很有用,很有用,很有用,甚至有人说正则很有趣! 好吧,既然有用的东西,就一定要学,一定要学,一定要学!想当年我学微观经济这门课都是拒绝的,头疼的,但是后来期末备考却发现它的乐趣。所以,任何事情,只要用心投入,一定会收获到乐趣。


    什么是RegExp?

    描述字符串规则的表达式。 

    语法

    • 直接量语法:/pattern/attrs
    • 创建对象的语法:new RegExp(pattern,attrs)

    参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

    参数 attributes 是一个可选的字符串,包含属性 "g"表示全局匹配,"i" 表示不区分大小写的匹配

    RegExp 对象方法

    regexpObj.test(str)

    测定正则表达式与指定字符串是否匹配。只要指定字符串中包含正则表达式,则返回true,否则返回false。

    regexpObj.exec(str)

    更强大的搜索,更详尽的结果:index,过程的状态:lastindex

    锚点

    用来匹配一个位置。

    • ^ 表示起始位置
    • $表示结尾位置
    • 表示单词边界

    字符类

    匹配一类字符中的一个

    • [abc] 表示a或b或c
    • [0-9] 表示0到9中的任何一个数字
    • [^0-9] 表示非数字的一个字符,这里的^ 表示非的意思
    • [a-z] 表示a到z中任何一个字母
    • . 表示任何一个字符(换行除外)

    元字符

    具有特殊意义的字符

    • d 等价于[0-9],表示查找数字
    • D 等价于[^d],表示查找非数字
    • s表示查找空白字符,空白符指的不只是按下空格键在屏幕上显示的空格字符,还包括制表符,换行和回车符。
    • S等价于[^s],表示查找非空白字符
    • w等价于[A-Za-z0-9],表示查找单词字符
    • W等价于[^w],表示查找非单词字符

    量词

    表示出现的次数

    • {m,n}表示m到n次
    • * 表示{0,}  即0到任意次
    • ? 表示{0,1} 即0或者1次
    • + 表示{1,...} 即1到任意次

    例子:

    /^1d{10}$/ 表示匹配一个以1开头,一共有11个数字的字符串

    转义符

    需要匹配的字符是特殊字符,所以需要转义一下啦

    例子:

    /@163.com$/ 表示匹配一个以@163.com结束的字符串,其中.是特殊字符,需要转义

    多选分支

    或用|表示

    例子:

    /b(a|e)d/ ===/b[ae]d/ 表示匹配bad或者bed

    /.(png|jpg|gif|jpeg)$/ 表示匹配图片格式

    字符类是一种特殊的多选分支

    捕获

    保存匹配到的字符串,以便日后再用。

    ()表示捕获

    (?:)表示不捕获

    支持正则表达式的 String 对象的方法

     str.match(regexp)

    获取匹配的字符串

    str.replace(regexp/substr,replacement)

    替换与正则表达式匹配的子串。

    btw:

    1. 正则表达式的匹配只做一次,因此需要用到属性g表示全局模式。
    2. 正则表达式中,量词的惰性与贪婪模式的区别?

      

     

  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/rosestudy/p/4840787.html
Copyright © 2011-2022 走看看