繁体   English   中英

使用 JavaScript 中的条件在逗号上拆分字符串的 RegEx 表达式

[英]RegEx expression to split a string on comma with a condition in JavaScript

我对 RegEx 表达式很陌生,问题是我想使用 RegEx 拆分具有某些条件的字符串。 假设我想用逗号分隔,但如果后面没有某些特定的东西。 以下示例显示了所有内容:

str = "a , b=10 , c=add(3,b) , d"
certainThings = ["add" , "sub"]

仅由逗号分割的str.split(',')输出是: ["a" , "b=10" , "c=add(3" , "b)" , "d"]

但我不想在第 3 个逗号处拆分,因为它后面是certainThings元素数组的元素之一。

预期的输出是: ["a" , "b=10" , "c=add(3,b)" , "d"]

一种可能的解决办法是通过逗号和连接两个元件分裂如果现有包含的一个要素certainThings阵列。 但我认为通过 RegEx 表达式应该有更好的方法来做到这一点。

假设您只需要担心排除单嵌套括号内的逗号,我们可以尝试拆分以下正则表达式模式:

\s*,\s*(?![^(]*\))

这是说拆就逗号,双方通过可选的空白包围,只要我们不能期待和遇到结束)括号没有第一次看到的开口(一个。这个逻辑规则出逗号内c=add(3,b) ,因为那个特定的逗号先碰到 a )而没有看到开头的那个( .

 var str = "a , b=10 , c=add(3,b) , d" parts = str.split(/\\s*,\\s*(?![^(]*\\))/); console.log(parts);

您还可以选择不是逗号的所有内容,而不是在逗号上拆分:

 const str = "a , b=10 , c=add(3,b) , d"; const regex = /(?:\\([^)]*\\)|[^,])+/g; console.log( str.match(regex).map(str => str.trim()) );

正则表达式图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM