小结 | 正则表达式模式匹配

作者: 亮亮叔家的小笔笔 | 来源:发表于2017-08-08 20:41 被阅读0次

正则表达式

是一个描述字符模式的对象。

JavaScript中的正则表达式用RegExp对象表示。
正则表达式的定义

正则表达式的创建:

  • 可以使用RegExp()构造函数来创建RegExp对象.
  • 也可以通过一种特殊的直接量语法来创建。
    var pattern = /s$/ == var pattern = new RegExp("s$");
    //运行这段代码创建一个新的RegExp对象,并将它赋值给变量pattern,这个特殊的RegExp对象用来匹配所有以字母“s”结尾的字符串。
正则表达式的模式规则是由一个字符序列组成的。包括所有字母和数字在内,大多数的字符都是按照直接量仅描述待匹配的字符的。
1. 直接量字符

正则表达式中的所有字母和字符都是按照字面含义进行匹配的。

正则表达式中的直接量字符.png
通行规则:
  • 如果想在正则表达式中使用这些字符的直接量进行匹配,则必须使用前缀\。
  • 对于想按照直接量进行匹配的字母和数字尽量不要用反斜线对其转义。
  • 要想在正则表达式中按照直接量匹配反斜线本身,则必须使用反斜线对其转义。"/\\/".
2. 字符类

将直接量字符单独放进方括号内就组成了字符类。

字符类.png
3. 重复

正则表达式的重复字符语法(尽可能多的匹配)

重复.png
!!!对于"?"、"*",由于字符内可能匹配0个字符,因此他们允许什么都不匹配。
4. 非贪婪的重复

非贪婪重复是匹配尽可能少的,语法为在待匹配字符后加“?”,如 ??、+?。

5. 选择、分组和引用
  • 字符"|"用于分隔供选择的字符
    选择项的尝试匹配次序是从左到右,直到发现了匹配项。
    eg: /ab|cd|ef/可以匹配字符串"ab"、"cd"、"ef"。
  • 圆括号有三种作用:
  1. 把单独的项组合成子表达式。
  2. 在完整的模式中定义子模式。
  3. 允许在同一正则表达式的后部引用前面的子表达式。
  • 正则表达式不允许用双引号括起的内容中有单引号。
  • 在正则表达式中不用创建带数字编码的引用,也可以对子表达式进行分组,以 ("?:" 和 ")"分组。
6.指定匹配位置

正则表达式中的锚字符:
^ 匹配字符串的开头,在多行检索中,匹配一行的开头
$ 匹配字符串的结尾
\b 匹配一个单词的边界
\B 匹配非单词的边界
(?=p) 零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配P的那些字符
(?|p) 零宽负向先行断言,要求接下来的字符不与P匹配。

7. 修饰符
  • 修饰符放在"/"符号之外。
  • 修饰符"i"用以说明模式匹配是不区分大小的。
  • 修饰符"g"说明模式匹配应该是全局的。
  • 修饰符"m"在多行模式中执行匹配,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束。

用于模式匹配的String方法

  • search()
    参数为一个正则表达式,返回第一个与之匹配的子串的起始位置(不支持全局检索)。
  • replace()
    其中第一个参数是一个正则表达式,第二个参数是要进行替换的字符串。
  • match()
    唯一参数就是一个正则表达式,返回的是一个由匹配结果组成的数组。
  • exec()
    返回一个数组,带有index和input属性。

RegExp对象

RegExp()构造函数带有两个字符串参数,其中第二个参数是可选的,第一个参数包含正则表达式的主题部分。
var zipcode = new RegExp("\d{5}","g");

RegExp属性

  • source属性
    是一个只读字符串,包含正则表达式的文本。
  • global属性
    是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g。
  • ignoreCase属性
    也是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符i。
  • multiline也是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符m。
  • lastIndex是一个可读/写的整数,如果匹配模式带有g修饰符,这个属性存储在整个字符串下,一次检索的开始位置。

RegExp方法

  • exec()方法
    对一个指定的字符串执行一个正则表达式。
    即在一个字符串的执行匹配检索,如果没有找到任何匹配就返回null,但如果找到了一个匹配,它将返回一个数组。
  • test()方法
    它的参数是一个字符串。
    用test()对某个字符串进行检索,如果包含正则表达式的一个匹配结果则返回true。
    var pattern = /java/i;
    pattern.test("javascript"); //返回true
正则符号表.png

相关文章

  • JavaScript 与正则表达式 -- 匹配模式

    在正则表达式中,一般所说的匹配模式指的是匹配时遵循的规则。通过设置匹配模式,可以改变正则表达式的匹配规则。 指定方...

  • 2019.8.15分享:正则表达式字符匹配攻略

    一、正则表达式 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 这次分享主要将提下正则表达式字符匹配 • 两种...

  • 正则表达式的贪婪模式和非贪婪模式

    一、什么是贪婪模式和非贪婪模式? 定义 贪婪模式:正则表达式趋向于匹配最大长度。 非贪婪模式:正则表达式趋向于匹配...

  • 《javaScript正则表达式迷你书》(一)

    正则表达式字符匹配攻略 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 两种模糊匹配 如果正则只有精确匹配是没...

  • 正则表达式位置匹配攻略

    来源:正则表达式位置匹配攻略作者:老姚(转载已获得作者授权) 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 ...

  • 正则表达式字符匹配攻略

    来源:正则表达式字符匹配攻略作者:老姚(转载已获得作者授权) 正则表达式是匹配模式,要么匹配字符,要么匹配位置。请...

  • 正则表达式回溯法原理

    本文摘抄自javascript正则表达式迷你书 正则表达式是匹配模式,要么匹配字符,要么匹配位置 1. 没有回溯...

  • 正则表达式编程

    本文摘抄自javascript正则表达式迷你书 正则表达式是匹配模式,要么匹配字符,要么匹配位置 1. 正则表达...

  • 正则表达式字符匹配

    本文摘抄自javascript正则表达式迷你书 正则表达式是匹配模式,要么匹配字符,要么匹配位置 本文所用图示化工...

  • linux查漏补缺 3

    3.1 正则表达式 正则表达式 (regular expression) 是用来做模糊匹配的,匹配符合特定模式的文...

网友评论

    本文标题:小结 | 正则表达式模式匹配

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