• JS正则表达式


    1 正则语法

    1.1 常用元字符

    代码描述
    .匹配除换行符之外的任意字符
    [...]匹配方括号中的任意单个字符
    [^...]匹配不在方括号中的任意单个字符
    \w匹配数字、字母和下划线,[a-zA-Z0-9_]
    \W匹配任意单个非字母、数字或下划线的字符
    \s匹配任意单个空白字符(空格、制表符、换行符、回车符等)
    \S匹配任意单个非空白字符
    \d匹配任意单个数字
    \D匹配任意单个非数字字符
    \b匹配任意单个单词边界
    \B匹配任意单个非单词边界的位置
    ^匹配字符串的开始
    $匹配字符串的结束

    1.2 常用限定符

    代码描述
    *匹配前面的字符 0 次或多次
    +匹配前面的字符 1 次或多次
    ?匹配前面的字符 0 次或 1 次
    {n}匹配前面的字符恰好 n 次
    {n, }匹配前面的字符至少 n 次
    {n, m}匹配前面的字符至少 n 次,至多 m 次
    x|y左右两边的模式只要有一个匹配就可以
    ()将模式分组,并记住匹配的文本
    \1匹配第 1 个分组所记住的文本
    \2匹配第 2 个分组所记住的文本
    \n匹配第 n 个分组所记住的文本

    1.3 常用分组语法

    代码描述
    (exp)匹配exp,每个分组将产生分组号。可用\x的形式使用分组号,其中x表示数字。例如:/<(\w+)><\/\1>/可以匹配成对出现的HTML标签;
    (?:exp)匹配exp,但不产生分组号
    (?=exp)负向零宽断言, 表示在它后面必须匹配 exp
    (?<=exp)负向零宽断言, 表示在它前面必须匹配 exp
    (?!exp)负向零宽断言,表示在它后面不能匹配 exp
    (?  负向零宽断言, 表示在它前面不能匹配 exp

    举例说明:

    • (?=exp)
      我们可以使用正则表达式 /^\d+(?=%)/ 来匹配所有以百分号结尾的数字,例如:
    123%:匹配到 12345%:匹配到 45
    • 1
    • 2

    下列字符串都不能被匹配:

    123:不以百分号结尾。
    45%6:百分号后面还有其他字符。
    
    • 1
    • 2
    • (?<=exp)

    我们可以使用正则表达式 /(?<=).*(?=<\/em>)/ 来匹配所有被 包含的字符串,例如:

    <em>hello</em>:匹配到 hello。
    <em>world</em>:匹配到 world。
    
    • 1
    • 2

    下列字符串都不能被匹配:

    <em>hello</em>world:</em> 后面还有其他字符。
    hello<em></em><em> 前面没有其他字符
    
    • 1
    • 2
    • (?!exp)

    我们可以使用正则表达式 /^(?!abc)/ 来匹配所有不以 abc 开头的字符串,例如:

    def:不以 abc 开头。
    123:不以 abc 开头。
    
    • 1
    • 2

    下列字符串都不能被匹配:

    abcdef:以 abc 开头。
    abc123:以 abc 开头。
    
    • 1
    • 2
    • (?
      我们可以使用正则表达式 /(? 来匹配所有不以 abc 结尾的字符串,例如:
    def:不以 abc 结尾。
    123:不以 abc 结尾。
    
    • 1
    • 2

    下列字符串都不能被匹配:

    defabc:以 abc 结尾。
    123abc:以 abc 结尾。
    
    • 1
    • 2

    2 JS中正则相关的几个方法

    RegExp.prototype.test()

    test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。

    /\d+/.test('hello'); // false
    
    • 1

    RegExp.prototype.exec()

    exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。

    String.prototype.search()

    search() 方法执行正则表达式和 String 对象之间的一个搜索匹配。如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。

    String.prototype.match()

    match()方法检索返回一个字符串匹配正则表达式的结果。

    • 如果使用 g 标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
    • 如果未使用 g 标志,则仅返回第一个完整匹配及其相关的捕获组。

    String.prototype.replace()

    replace() 方法返回一个由替换值替换部分或所有的模式(pattern)匹配项后的新字符串。
    模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
    如果pattern是字符串,则仅替换第一个匹配项。

    String.prototype.split()

  • 相关阅读:
    【每日一题】2769. 找出最大的可达成数字
    51系列—基于51单片机的RS232通信示例
    深入探索:AbstractQueuedSynchronizer 同步器的神秘面纱
    电力通信与泛在电力物联网技术的应用与发展-安科瑞黄安南
    【AI】PyTorch入门(五):构建神经模型
    红黑树概述
    【常见 error】Vivado 综合出现中断、失败、“PID not specified”
    【JavaWeb】一篇文章学习Tomcat
    手动搭建K8S环境
    Linux实用指令
  • 原文地址:https://blog.csdn.net/baidu_36511315/article/details/126453531