gpt4 book ai didi

javascript - 正则表达式查找是否只有一个代码块

转载 作者:行者123 更新时间:2023-11-28 15:38:05 25 4
gpt4 key购买 nike

我的输入是一个字符串,我想验证是否只有一个第一级代码块。

示例:

{ abc }              TRUE
{ a { bc } } TRUE
{ a {{}} } TRUE
{ abc {efg}{hij}} TRUE
{ a b cde }{aa} FALSE

/^\{.*\}$/ 对 5 种情况有效,你能帮我找到对最后一种情况无效的正则表达式吗?

语言是 JavaScript。

最佳答案

编辑:我在指定 JavaScript 之前就开始写答案了。将其保留为记录,因为它完整地解释了正则表达式。

简而言之:在 JavaScript 中我想不出可靠的解决方案。在其他引擎中有几个选项:

  • 递归(我将在下面展开)
  • 平衡组 (.NET)

对于解决方案2(无论如何在JS中也不起作用),我将推荐您引用this question中的示例

递归正则表达式

在 Perl、PCRE(例如 Notepad++、PHP、R)和 Matthew Barnett 的 Python 正则表达式模块中,您可以使用:

^({(?:[^{}]++|(?1))*})$

这个想法是精确匹配一组嵌套大括号。更多的内容都会导致正则表达式失败。

查看 the Regex Demo 中匹配和失败的内容

说明

  • ^ anchor 断言我们位于字符串的开头
  • 外括号定义组 1(或子例程 1)
  • { 匹配左大括号
  • (?: ... )* 零次或多次,我们将...
  • [^{}]++ 匹配 {} 以外的任何字符
  • |
  • (?1)重复子程序1的表达式
  • } 匹配右大括号
  • $ anchor 断言我们位于字符串的末尾。因此,

关于javascript - 正则表达式查找是否只有一个代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955473/

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