使用正则表达式匹配特定序列或其他所有内容

时间:2010-08-13 03:12:14

标签: javascript regex

试图在JS中提出一个可以分割用户输入的正则表达式,如:

"Hi{user,10,default} {foo,10,bar} Hello"

成:

["Hi","{user,10,default} ","{foo,10,bar} ","Hello"]

到目前为止,我已经实现了用({.+?,(?:.+?){2}})|([\w\d\s]+)分割这些字符串,但第二个捕获组太过独占,因为我希望每个字符在这个组中匹配。试过(.+?)但当然失败了......

同伴正念大师?

3 个答案:

答案 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专家,我建议如下:

  • 使用({[^},]*,[^},]*,[^},]*?})
  • 获取所有正面匹配
  • 从原始字符串中删除所有正匹配
  • 拆分剩下的字符串

尽管如此,如果您需要按顺序生成值,这可能会变得棘手。