【问题标题】:Regex expression for #include statement#include 语句的正则表达式
【发布时间】:2021-04-07 13:26:30
【问题描述】:

我正在构建一个 node.js json 实用程序,它将包含外部 json 文件并在嵌套查找后合并。我正在努力使用能够验证以下场景的正则表达式

!include('other.json') - true
!include("../folder/1.json") - true
!include(./current/external.json) - true
#include('other.json') - false

开头和结尾的引号也应该匹配:

!include('file.json) - false
!include('file.json") - false

正则表达式不是我的强项,因此非常感谢任何帮助。

【问题讨论】:

    标签: javascript json regex


    【解决方案1】:

    这是使用 cmets 的解决方案:

    /^!include\((['"]?)[^'")]+\1\)/
    
    • ^ - 匹配字符串的开头
    • !include\( - 匹配提取字符串!include((如果您想将其用作文字字符串,则必须转义正则表达式中的括号)
    • (['"]?) - 创建一个组(非转义括号)并匹配 '"。通过使用?,我们可以将匹配设为可选,这样我们也可以不匹配任何内容
    • [^'")]+ - ^ 表示匹配除'") 之外的所有字符,+ 表示匹配多个。这样你就不会匹配一个空的包含 !include()
    • \1 - 匹配第一组中使用的任何内容,这样我们就不会出现引号不匹配
    • \) - 匹配最后一个右括号

    对于学习正则表达式,我强烈推荐 Lea Verou 的演讲 Reg(exp){2}lained/: Demystifying Regular Expressions。您还可以在 https://regexr.com 创建测试用例和测试正则表达式,它还提供了一个方便的备忘单。

    如果你想玩弄或扩展你的测试用例,这里有一个链接https://regexr.com/5jepj

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2019-11-28
      • 1970-01-01
      相关资源
      最近更新 更多