javascript - 正则表达式在引号外的特定字符上拆分字符串

标签 javascript regex

如何在保留引用字符串的同时分割这一行

>div#a.more.style.ui[url="in.tray"]{value}

拆分的字符在哪里

> # . [ {

产生:

>div
#a
.more
.style
.ui
[url="in.tray"]
{value}

目前的努力是:

\>|\[|\{|#|\.?(?:(["'])(?:\\?.)*?\1)*

"in.tray" 被拆分。

更新 1:

解决方案需要基于正则表达式,因为模式是从现有代码中的 JS 对象的键组装而成的,它们是:

JSObject
    '>': function ...
    '^': function ...
    '[': function ...
     ...

使用回调函数来处理正则表达式的输出。

目标字符串是一个 Emmet 宏,可能包含以纯字符开头,以及可能重复的至少 ^$ 被视为单独的元素,例如:

p>div>div>span^h2^^h1>div#a.li^mo+re.st*yle.ui[url="in.tray"]{value}$$$

当前工作基于 @tim-pietzcker使用 .match() 但过滤掉最后一个空的匹配项:

[a-z$^+*>#.[{]{0,1}(?:"[^"]*"|[^"$^+*>#.[{]){0 ,}

最佳答案

不要使用split(),那很简单:

result = subject.match(/[>#.[{](?:"[^"]*"|[^">#.[{])+/g);

查看live on regex101.com .

解释:

[>#.[{]     # Match a "splitting" character
(?:         # Start of group to match either...
 "[^"]*"    # a quoted string
|           # or
 [^">#.[{]  # any character except quotes and "splitting" characters
)+          # Repeat at least once.

关于javascript - 正则表达式在引号外的特定字符上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22503197/

相关文章:

javascript - 如何为带有尾随页面的网站 url 编写正则表达式

regex - 用于在子字符串中用破折号替换空格的正则表达式。

python - 为什么输出显示内存代码?

javascript - 为什么 JavaScript string.split(/[ -_]+/) 的行为就像引号 (' and ") 包含在 [group] 中一样?

javascript - 正则表达式捕获特定字符后的文本

javascript - 打开子页面(弹出页面)时如何模糊/禁用父组件?

javascript - 基于attr的jquery改变选择器

变量的 JavaScript 属性

javascript - 使用 CSS3 双指缩放

javascript - TypeError 'undefined' 不是 Javascript/Jquery JSON 解析器中的对象