【问题标题】:Javascript RegEx to match all whitespaces except between special charactersJavascript RegEx 匹配除特殊字符之间的所有空格
【发布时间】:2021-09-20 16:35:14
【问题描述】:

我需要一个正则表达式来匹配除 @ 符号内的所有空格以进行正确拆分。

我有这个字符串:

[0] == @Item 1@

通过拆分,我需要以下数组(在第三个元素中有或没有 @):

var array = ["[0]","==","@Item 1@"];

通过简单的 split(" ") 我得到这个:

var array = ["[0]","==","@Item","1@"];

感谢您的帮助。

【问题讨论】:

    标签: javascript regex split


    【解决方案1】:

    你可以使用

    const text = '[0] == @Item 1@';
    console.log( text.match(/(?:@[^@]*@|\S)+/g) )

    请参阅regex demo。 (?:@[^@]*@|\S)+ 模式意味着:

    • (?: - 非捕获组的开始:
      • @[^@]*@ - 一个@ 字符,零个或多个除@ 之外的字符,然后是@ 字符
      • | - 或
      • \S - 任何非空白字符
    • )+ - 小组结束,重复一次或多次。

    /g 平面告诉.match() 提取所有出现的事件。

    【讨论】:

    • 成功了,谢谢!
    • 您好,我有另一个提示,这很关键,我已经尝试了基于此的解决方案,但没有奏效。除了@和@之间的括号外,我怎样才能得到所有括号?我需要删除所有外括号。示例:` ( [15] == @val1@ || [15] == @val 2 (不要选择这些)@ ) && ( [5] == @val 3@ || [5] == @val 4 @)`
    • @LauraEld "我需要删除所有外括号。" - 这是否意味着您需要提取它们? Array.from(text_str.matchAll(/@[^@]*@|(\([^()]*\))/g), x => x[1]).filter(Boolean)?
    猜你喜欢
    • 2021-12-02
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2015-03-12
    相关资源
    最近更新 更多