使用正则表达式,从javascript中的字符串中提取值
需要使用正则表达式从字符串中提取值(出于性能原因)。 情况可能如下:使用正则表达式,从javascript中的字符串中提取值,javascript,regex,string,Javascript,Regex,String,需要使用正则表达式从字符串中提取值(出于性能原因)。 情况可能如下: 红色,100 红色,“100” 红色,“100,” 红色,“100\”ABC\“200” 结果分离的[label,value]数组应为: [‘红色’,‘100’] [‘红色’,‘100’] [‘红色’、‘100’] ['RED','100“ABC”200'] 我研究了解决方案和一个流行的库,甚至只是拆分整个字符串以获得值, e、 g.“红色,100”。拆分(/,/)可能就行了 但我试图用逗号创建一个正则表达式,只有当逗号不包含
非常感谢您的帮助。您可以使用这个正则表达式来处理字符串中的转义引号:
/"[^"\\]*(?:\\.[^"\\]*)*"|[^,"]+/g
正则表达式解释:
:匹配文字开头引号“
:匹配0个或更多非[^“\\]*
且非引号的字符\
:后跟转义字符和另一个非引号、非\。匹配此组合中的0个或多个以完成所有转义字符(?:\\...^“\]*)*
:匹配结束报价“
:或(替代)|
:匹配1+个非引号、非逗号字符串[^,”]+
const regex=/“[^”\]*(?:\\.[^”\]*)*“[^,”]+/g;
常量arr=[`RED,100`,`RED,100`,`RED,100`,
`红色,“100\\”ABC\\“200”`;
让m;
对于(变量i=0;i”,Result);
}
您可以使用这个正则表达式来处理字符串中的转义引号:
/"[^"\\]*(?:\\.[^"\\]*)*"|[^,"]+/g
正则表达式解释:
:匹配文字开头引号“
:匹配0个或更多非[^“\\]*
且非引号的字符\
:后跟转义字符和另一个非引号、非\。匹配此组合中的0个或多个以完成所有转义字符(?:\\...^“\]*)*
:匹配结束报价“
:或(替代)|
:匹配1+个非引号、非逗号字符串[^,”]+
const regex=/“[^”\]*(?:\\.[^”\]*)*“[^,”]+/g;
常量arr=[`RED,100`,`RED,100`,`RED,100`,
`红色,“100\\”ABC\\“200”`;
让m;
对于(变量i=0;i”,Result);
}
您可以使用并仅获取组
var数组=['RED,100','RED,100','RED,100','RED,100\'ABC\'200'];
console.log(array.map(s=>s.match(/^([^,]+),(.*)$/).slice(1))
您可以使用并仅获取组
var数组=['RED,100','RED,100','RED,100','RED,100\'ABC\'200'];
log(array.map(s=>s.match(/^([^,]+),(.*)$/).slice(1))
Yes以案例3为例。如果我们用逗号分开,它会分成3块,对吗?我们不希望逗号出现在第一部分(红色)?是的,第一部分也一样,即标签。从用户的角度来看,它是简单的输入。格式是label,value,但如果您想在标签/值中输入逗号(,)或引号(“),我们不会对此进行拆分,是的,以案例3为例。如果我们按逗号拆分,它将分成3块,对吗?我们不希望逗号出现在第一部分(红色)?是的,第一部分也一样,即标签。从用户的角度来看,它是一个简单的输入。格式是标签,值,但如果您想在标签/值中输入逗号(,)或引号(“),我们将不会对此进行拆分,非常感谢。这真是难以置信。花了将近10分钟的时间。再次感谢。你刚刚启发了我关于regex的力量。非常感谢。这真是难以置信。花了将近10分钟的时间。再次感谢。你刚刚启发了我关于regex的力量。