无法使RegExp在JavaScript中工作

无法使RegExp在JavaScript中工作,javascript,regex,Javascript,Regex,我有这个字符串: "br#go.span, span, a.my_a, [class=my_a]" 这个正则表达式: /((\.|\#|\:|(\[[a-zA-Z=]+\]))+^[()]+|[A-Za-z]+)/g 我希望它返回如下数组: ["br", "#go", ".span", "span", "a", ".my_a", "[class=my_a]"] 但我得到的数组是: ["br", "go", "span", "a", "my", "a", "class", "my", "a

我有这个字符串:

"br#go.span, span, a.my_a, [class=my_a]"
这个正则表达式:

/((\.|\#|\:|(\[[a-zA-Z=]+\]))+^[()]+|[A-Za-z]+)/g 
我希望它返回如下数组:

["br", "#go", ".span", "span", "a", ".my_a", "[class=my_a]"]
但我得到的数组是:

["br", "go", "span", "a", "my", "a", "class", "my", "a"] 
我也尝试过:

/([A-Za-z]+|(\.|\#|\:|(\[[a-zA-Z=]+\])])+^(\.|\#|\:|(\[[a-zA-Z=]+\]))+)/ig
/([A-Za-z]+|(\.|\#|\:|(\[[a-zA-Z=]+\])])+^(\.|\#|\:|(\[[a-zA-Z=]+\]))+)/ig
//                                       ^
我从上到下搜索了互联网,尝试了很多事情,比如删除一些部分和添加一些部分。这是一个JavaScript库。你能帮帮我吗?!谢谢

实际上,我只想将其拆分为:

“.”、“:”和“[=]”//注意:*匹配任何内容


看起来您的正则表达式中有一个错误,它只与[a-z]+部分匹配:

这是一个永远不会发生在那之前的部分,而不是之后的部分。你可能想要

/((\.|\#|\:|(\[[a-zA-Z=]+\]))+[^()]+|[A-Za-z]+)/g
但我建议在这个被否定的字符类中包含一些其他字符,比如空格、逗号和所有这些..[]运算符。对于您的用例,以下正则表达式应该受到影响:

/[.#:]?[a-z_]+|\[[a-z_=]*\]/ig
我也尝试过:

/([A-Za-z]+|(\.|\#|\:|(\[[a-zA-Z=]+\])])+^(\.|\#|\:|(\[[a-zA-Z=]+\]))+)/ig
/([A-Za-z]+|(\.|\#|\:|(\[[a-zA-Z=]+\])])+^(\.|\#|\:|(\[[a-zA-Z=]+\]))+)/ig
//                                       ^
嗯,你是故意用那个锚吗?你认为它有什么作用

实际上,我只想在“.”、“:”和“[=]”处拆分它

我想你不想把绳子绑起来。而不是试着用你感兴趣的弦

var str = "br#go.span, span, a.my_a, [class=my_a]"
str.split(/,?\s|(?=:|#|\[|\.)/g) // (using lookahead) or
str.match(/[.#:]?[a-z_]+|\[[a-z_=]*\]/ig) // will both have the desired result
// but will deal differently with invalid strings
// and have different readability/maintainability
试试这个

"br#go.span, span, a.my_a, [class=my_a]".match(/(\[[\w\W]+\])|(\w+)|(\W[\w]+)/g)
["br", "#go", ".span", " span", " a", ".my_a", "[class=my_a]"]
用于更新的查询

实际上,我只想将其拆分为:

“.”、“:”和“[=]”//注意:*匹配任何内容

试试这个:

"br#go.span, span, a.my_a, ab:c, [class=my_a]".match(/(\[[\w\W]+\])|(\.[\w]+)|(#[\w]+)|(\:[\w]+)|([\w]+)/g)
["br", "#go", ".span", "span", "a", ".my_a", "ab", ":c", "[class=my_a]"]

向我们展示你正在使用的代码和得到的结果。我真的应该展示整个库代码吗?并更新以显示结果我getting@user3719477:否,您应该显示在stringI上应用正则表达式的方法。我只是想看看您使用此正则表达式的代码。它应该是两行代码max。