试图在JS中提出一个可以分割用户输入的正则表达式,如:
"Hi{user,10,default} {foo,10,bar} Hello"
成:
["Hi","{user,10,default} ","{foo,10,bar} ","Hello"]
到目前为止,我已经实现了用({.+?,(?:.+?){2}})|([\w\d\s]+)
分割这些字符串,但第二个捕获组太过独占,因为我希望每个字符在这个组中匹配。试过(.+?)
但当然失败了......
同伴正念大师?
答案 0 :(得分:0)
使用此:
"Hi{user,10,default} {foo,10,bar} Hello".split(/(\{.*?\})/)
你会得到这个
["Hi", "{user,10,default}", " ", "{foo,10,bar}", " Hello"]
注意:{.*?}
。这里的问号('?')在'}'的第一场比赛中停止。
答案 1 :(得分:0)
这是我提出的正则表达式:
(:?[^\{])+|(:?\{.+?\})
与上面的内容类似,它将该空格作为匹配项。
答案 2 :(得分:0)
Beeing没有JavaScript专家,我建议如下:
({[^},]*,[^},]*,[^},]*?})
尽管如此,如果您需要按顺序生成值,这可能会变得棘手。