我需要分割字符串,分割字符是","但必须跳过"("…")"
const paramString = "gyro (param1, param2), proximity, Ultra Wideband (UWB) support, compass";
const paramArr = paramString.match(/[^(),]+((.+?))?/g).map( item => item.trim() );
在我的结果是paramArr[2]坏。
[ "gyro (param1, param2)", "proximity", "Ultra Wideband (UWB)", "support", "compass" ]
I need result:
[ "gyro (param1, param2)", "proximity", "Ultra Wideband (UWB) support", "compass" ]
请告知如何更新我的RegEx。
你应该使用反向向前看。您基本上选择所有逗号(后面有空格以修饰它们),如果之前没有(
,则不跟随)
:
const paramString = "gyro (param1, param2), proximity, Ultra Wideband (UWB) support, compass";
const paramArr = paramString.split(/,s*(?![^(]*))/);
console.log(paramArr);
注意:嵌套括号不起作用。它将在以下场景中失败:
const paramString = "gyro (param1, (param2)), proximity, Ultra Wideband (UWB) support, compass";
尝试下面提到的regx,这将只在预期的令牌中中断字符串。
/[w ]+(([^)]*))?( w+)?/gi
regx将您的字符串分成以下标记。
gyro (param1, param2)
proximity
Ultra Wideband (UWB) support
compass
请点击regx的实时演示链接:
https://regex101.com/r/yCYHgw/1
https://regex101.com/r/yCYHgw/2
(已更新,regx仅适用于非嵌套)