javascript - 使用具有多个标记的 JavaScript 正则表达式分割字符串并考虑转义分隔符

标签 javascript regex

我想使用正则表达式在 JavaScript 中拆分字符串。

输入: key1(name1,val1)key2(val2)

预期输出:

  • 键1
  • 名称1,值1
  • 键2
  • val2

如果我使用这个 'key1(name1,val1)key2(val2)'.match(/[^\(\)]+/g) 它对于上面的字符串工作正常但失败对于转义的括号。

例如:以下输入失败 'key1(name\(1,val1)key2(val\)2)'.match(/[^\(\)] +/g)

我想在输入值中允许\) 和\(,并且在分割时不应考虑它。

我想要的预期输出如下:

  • 键1
  • 名称\(1,val1
  • 键2
  • val\)2

如何使用正则表达式实现它?

最佳答案

这个怎么样:

result = subject.match(/(?:\\.|[^()])+/g);

查看live on regex101.com .

说明:

(?:     # Start a non-capturing group that matches...
 \\.    # either an escaped character
|       # or
 [^()]  # any character except parentheses
)+      # one or more times.

关于javascript - 使用具有多个标记的 JavaScript 正则表达式分割字符串并考虑转义分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22484422/

相关文章:

javascript - 单击外部链接后悬停效果仍然存在

javascript - 如何在浏览器不崩溃的情况下将大量json数据导出到CSV?

javascript - 如何告诉 .hover() 等待?

regex - pig - 使用正则表达式解析字符串

javascript - 如何使用 RegEx 查找同时包含数字和字母的括号,而不仅仅是一个或另一个

sql - 在 MySQL 的正则表达式中使用列

javascript - 写入文本文件而不覆盖 fs Node js

mysql - 如何使用 REGEXP MySQL 函数查找超过 2 个点的电子邮件?

java - Pattern matcher.group() 越界异常

javascript - Highcharts - 第三个 Y 轴的对齐问题