Javascript正则表达式来解析字符串

Javascript正则表达式来解析字符串,javascript,regex,Javascript,Regex,我有以下字符串: id,square,vegetable.garden:id<>cell:gardenId id,square,vegetable.garden:id<>cell:gardenId?id=10 id,square,vegetable.garden:id<>cell:gardenId@toto id,square,vegetable.garden:id<>cell:gardenId^titi id,square,vegetable.g

我有以下字符串:

id,square,vegetable.garden:id<>cell:gardenId
id,square,vegetable.garden:id<>cell:gardenId?id=10
id,square,vegetable.garden:id<>cell:gardenId@toto
id,square,vegetable.garden:id<>cell:gardenId^titi
id,square,vegetable.garden:id<>cell:gardenId?id=10@toto^titi
id,square,vegetable.garden:id<>cell:gardenId@toto^titi
但是这个正则表达式只匹配和捕获第5个字符串的参数。您有匹配所有字符串的解决方案吗

谢谢你的帮助

对不起,如果不清楚的话

我有这个

id,square,vegetable.garden:id<>cell:gardenId?id=10@toto^titi
id,正方形,蔬菜。花园:idcell:gardenId?id=10@toto^提提
我希望将参数拆分为:

group1 = id,square,vegetable
group2 = garden:id<>cell:gardenId
group3 = ?
group4 = id=10
group5 = @
group6 = toto
group7 = ^
group8 = titi
group1=id,正方形,蔬菜
group2=garden:idcell:gardenId
第三组=?
组4=id=10
第5组=@
第6组=toto
第7组=^
第8组=提提
上一个正则表达式正在工作。但是对于其他字符串,这个正则表达式不起作用,因为我可以对@或有不同的顺序?分隔符,它们可以是可选的

在线正则表达式与例子


更清楚吗?

您想做什么有点不清楚,但您可以尝试使用类似的方法来使用正则表达式查看字符串是否包含另一个字符串:

const str1='id,square,vegeture.garden:idcell:gardenId'
const str2='id,square,vegeture.garden:idcell:gardenId?id=10'
const str3='id,正方形,蔬菜。花园:idcell:gardenId@toto'
const str4='id,square,vegeture.garden:idcell:gardenId^titi'
const str5='id,square,vegeture.garden:idcell:gardenId?id=10@toto^提提
const str6='id,方形,蔬菜。花园:idcell:gardenId@toto^提提
常量正则表达式=新正则表达式(str1,“ig”)
常量res=str2.match(正则表达式)

console.log(res)
假设您最多只能扩展到3个部件: 下面是一个适用于您的正则表达式:
([^\s.]*)\([^?^\s]+)(?:([?@^])([^?\s@^]+)(?:([?@^])([^?\s@^]+)(?:([?:([?@^])([^?\s@^]+)((([?:([?@^])([^?\s@^]+))(

它匹配您给出的所有示例字符串,并且似乎匹配得相当快。 重复位
(?:([?@^])([^?\s@^]+)?
如果后面有一个?、@或^字符,并且后面跟的不是其中一个字符或空格,则可以选择匹配

group1 = id,square,vegetable
group2 = garden:id<>cell:gardenId
group3 = ?
group4 = id=10
group5 = @
group6 = toto
group7 = ^
group8 = titi