Javascript 在关键字(and)上拆分字符串,引号(';…和…';)除外
我有一个字符串,比如:Javascript 在关键字(and)上拆分字符串,引号(';…和…';)除外,javascript,regex,Javascript,Regex,我有一个字符串,比如: Price=10.00 and Count=30 and Name='a and b mix' 我想得到结果: ["Price=10.00", "Count=30", "Name='a and b mix'"] 我用任何方法得到它,但我不能。我需要将它们拆分为使用“and”,但如果“and”在引号中,则应忽略它 我试着 但是得到 ["Price=10.00 and", " Count=30 and", " Name='a and", " b mix' and"] 有
Price=10.00 and Count=30 and Name='a and b mix'
我想得到结果:
["Price=10.00", "Count=30", "Name='a and b mix'"]
我用任何方法得到它,但我不能。我需要将它们拆分为使用“and”,但如果“and”在引号中,则应忽略它
我试着
但是得到
["Price=10.00 and", " Count=30 and", " Name='a and", " b mix' and"]
有人知道怎么做吗?你的RegExp匹配得太多了。试试这个:
/(?:^|\b)[a-z]+=(?:'[^']+'|[^ ]+)/gi
正如你所期望的那样
您可以在此处查看它的操作:
工作原理:
它将检查这是否是字符串的请求,或者之前是否有空格。然后,它将至少匹配组中的1个字符
[a-z]
之后,它将匹配
=
字符。最后,它将匹配字符
,
,然后匹配任何非,
,然后匹配,
,或者匹配任何非空格的内容
为了适应使用单词
和进行拆分是一项要求的信息,我做了以下几点:
/(?:^| and )([a-z]+=(?:'[^']+'|[^ ]+))/gi
它的工作方式是完全相同的(除了有\b
我有和)
它只是有一个捕获组来确保它能够正常工作
O.p.说,即使在没有所有这些检查的情况下((?:^ |和)
也可以安全地删除,我还是做出了改变
以下是更新的链接:
作为旁注,它可以处理“不正确”格式的输入:
Price=10.00 Count=30和Name='a和b混合'
将匹配Price[…]
和Name[…]
Price=10.00和Count=30 Name='a和b组合'
将匹配Price[…]
和Count[…]
Price=10.00 Count=30 Name='a和b组合'
(无和
s)将只匹配Price[…]
Price and Count=30 Name='a and b mix'
('token'上没有值)将只匹配Count[…]
等等…您的RegExp匹配太多。试试这个:
/(?:^|\b)[a-z]+=(?:'[^']+'|[^ ]+)/gi
正如你所期望的那样
您可以在此处查看它的操作:
工作原理:
它将检查这是否是字符串的请求,或者之前是否有空格。
然后,它将至少匹配组中的1个字符[a-z]
之后,它将匹配=
字符。
最后,它将匹配字符,
,然后匹配任何非,
,然后匹配,
,或者匹配任何非空格的内容
为了适应使用单词和进行拆分是一项要求的信息,我做了以下几点:
/(?:^| and )([a-z]+=(?:'[^']+'|[^ ]+))/gi
它的工作方式是完全相同的(除了有\b
我有和)
它只是有一个捕获组来确保它能够正常工作
O.p.说,即使在没有所有这些检查的情况下((?:^ |和)
也可以安全地删除,我还是做出了改变
以下是更新的链接:
作为旁注,它可以处理“不正确”格式的输入:
Price=10.00 Count=30和Name='a和b混合'
将匹配Price[…]
和Name[…]
Price=10.00和Count=30 Name='a和b组合'
将匹配Price[…]
和Count[…]
Price=10.00 Count=30 Name='a和b组合'
(无和
s)将只匹配Price[…]
Price and Count=30 Name='a and b mix'
('token'上没有值)将只匹配Count[…]
等等…如果您试图匹配这些键、值对,我建议使用以下正则表达式
"Price=10.00 and Count=30 and Name='a and b mix'".match(/\S+=('[^']+'|\S+)/g)
// ["Price=10.00", "Count=30", "Name='a and b mix'"]
如果您试图匹配这些键、值对,我建议使用以下正则表达式
"Price=10.00 and Count=30 and Name='a and b mix'".match(/\S+=('[^']+'|\S+)/g)
// ["Price=10.00", "Count=30", "Name='a and b mix'"]
只需根据和
拆分输入字符串
只需根据和
拆分输入字符串
用这个
var str = "Price=10.00 and Count=30 and Name='a and b mix'";
var res = str.replace("and ", ",");
或.split()
方法使用此
var str = "Price=10.00 and Count=30 and Name='a and b mix'";
var res = str.replace("and ", ",");
(.+?)(?:and(?=(?:[^']*'[^']*')*[^']*$)|$)
或.split()
方法
(.+?)(?:and(?=(?:[^']*'[^']*')*[^']*$)|$)
你可以试试这个。看演示
您的正则表达式(.*)和
< p>1)它将捕获直到<代码>和< /代码>而不检查它是否在引号之间。<代码>(=(?:[^:[^’*'’[^’**))/[COD> >仅当不在BETWWIN引文时,才将该检查考虑为<代码>和< /代码>。
2)在最后一个元素之后,没有<代码>和,但它是字符串的结尾。因此,需要捕获到<>代码>和$$/COD>来考虑所有匹配。
你可以试试这个。看演示
您的正则表达式(.*)和
< p>1)它将捕获直到<代码>和< /代码>而不检查它是否在引号之间。<代码>(=(?:[^:[^’*'’[^’**))/[COD> >仅当不在BETWWIN引文时,才将该检查考虑为<代码>和< /代码>。
2)在最后一个元素之后,没有<代码>和,但它是字符串的结尾。因此,您需要捕获到<>代码>和$$/COD>来考虑所有匹配。
您想在JavaScript中使用ReXEP。您想在JavaScript中使用ReXExp。这不是我想要的。我不想把a和b混在一起,这不是我想要的。我不想把a和b混在一起。很好,它起作用了。但是我想用“and”to关键字来分割它们,谢谢。我想@vks的答案是我想这么做。很好,成功了。但是我想用“and”to关键字来分割它们,谢谢。我想@vks的答案是我想。太好了,用3个部分来匹配它们。第一个:(.+?)、中间:?:和(?=(?:[^']*'[^']*')*[^']*$),最后一个:$在“和”之后添加一个空格将是完美的。(.+?)(?:和(?=(?:[^']*'[^']*')*[^']*$)|$)当不在引号内时,它与空格匹配。你应该修复你的RegExp.great,使用3个部分来匹配它们。第一个:(.+?)、中间:?:和(?=(?:[^']*'[^']*')*[^']*$),最后一个:$在“和”之后添加一个空格将是完美的。(.+?)(?:和(?=(?:[^']*'[^']*')*[^']*$)|$)当不在引号内时,它与空格匹配。您应该修复您的RegExp。