gpt4 book ai didi

JavaScript 正则表达式匹配引号内的字符而不是字符集中的字符

转载 作者:行者123 更新时间:2023-11-29 18:32:34 24 4
gpt4 key购买 nike

我有一个字符串,我想使用 #、.、[] 或 {} 字符来拆分,就像在 CSS 中一样。所需的功能是:

- 输入:“div#foo[bar='value'].baz{text}”
- 输出:["div", "#foo", "[bar='value'", ".baz", "{text"]

这很简单,使用这个正则表达式:输入匹配(/([#.\[{]|^.*?)[^#.\[{\]}]*/g)

但是,这不会忽略引号内的语法字符,因为我也希望如此。 (例如 "div[bar='value.baz']" 应该忽略 .)

如何使我的 RegEx 的第二部分([^#.\[{\]}]* 部分)不仅捕获否定字符集,还捕获引号内的任何字符.换句话说,如何将 RegEx (\"|').+?\1 实现到我当前的正则表达式中。

编辑:我想出了一个工作正常的正则表达式,但无法处理引号内的转义引号(例如:"stuff here\\"quote ")。如果有人知道该怎么做,这将非常有帮助:

str.match(/([#.\[{]|^.*?)((['"]).*?\3|[^.#\[\]{\}] )*/g);

最佳答案

var str = "div#foo[bar='value.baz'].baz{text}";
str.match(/(^|[\.#[\]{}])(([^'\.#[\]{}]+)('[^']*')?)+/g)
// [ 'div', '#foo', '[bar=\'value.baz\'', '.baz', '{text' ]

关于JavaScript 正则表达式匹配引号内的字符而不是字符集中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459701/

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