【发布时间】:2011-09-21 12:41:23
【问题描述】:
我有一个字符串,我想用#, ., [], or {} 字符分割,就像在 CSS 中一样。所需的功能是:
- 输入:
"div#foo[bar='value'].baz{text}"
- 输出:
["div", "#foo", "[bar='value'", ".baz", "{text"]
这很容易,使用这个 RegEx:
input.match(/([#.\[{]|^.*?)[^#.\[{\]}]*/g)
但是,这不会忽略引号内的语法字符,我也希望如此。 (例如"div[bar='value.baz']" 应该忽略.)
如何使 RegEx 的第二部分([^#.\[{\]}]* 部分)不仅捕获否定字符集,还捕获引号内的任何字符。换句话说,我怎样才能将正则表达式 (\"|').+?\1 实现到我当前的表达式中。
编辑:
我已经找到了一个正常工作的正则表达式,但无法处理引号内的转义引号(例如:"stuff here \\" quote ")。如果有人知道如何做到这一点,那将非常有帮助:
str.match(/([#.\[{]|^.*?)((['"]).*?\3|[^.#\[\]{\}])*/g);
【问题讨论】:
标签: javascript regex quotes