gpt4 book ai didi

用于匹配正则表达式的 Javascript 正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:51 26 4
gpt4 key购买 nike

我正在研究一个特殊的正则表达式来匹配 javascript 正则表达式。

现在我有这个正则表达式工作:

/\/(.*)?\/([i|g|m]+)?/

例如:

'/^foo/'.match(/\/(.*)?\/([i|g|m]+)?/) => ["/^foo/", "^foo", undefined]
'/^foo/i'.match(/\/(.*)?\/([i|g|m]+)?/) => ["/^foo/i", "^foo", "i"]

现在我需要让这个正则表达式与:

'^foo'.match(/\/(.*)?\/([i|g|m]+)?/) => ["^foo", "^foo", undefined]

不幸的是,我之前的正则表达式不适用于那个。

谁能帮我找到匹配这个例子(以及其他例子)的正则表达式:

'^foo'.match([a regex]) => ["^foo", "^foo", undefined]

最佳答案

匹配正则表达式的正则表达式是

/\/((?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/

分解一下,

  1. \/ 匹配文字 /
  2. (?![*+?]) 是必需的,因为 /* 开始注释,而不是正则表达式。
  3. [^\r\n\[/\\] 匹配任何非转义序列字符和非起始字符组
  4. \[...\] 匹配可以包含未转义的 / 的字符组。
  5. \\. 匹配转义序列的前缀
  6. + 是必需的,因为 // 是行注释,而不是正则表达式。
  7. (?:g...)? 匹配非重复正则表达式标志的任意组合。好丑。

这不会尝试配对括号,或检查重复修饰符是否未应用于自身,而是过滤掉正则表达式无法进行语法检查的大多数其他方式。

如果您需要一个只与 body 相配的衣服,只需去掉其他所有东西即可:

/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+/

或者,在输入的开头和结尾添加 "/"

关于用于匹配正则表达式的 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17843691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com