![](/img/trans.png)
[英]extract “wrapped” values from a string using regex in javascript
[英]Using regex, extract values from a string in javascript
需要使用正则表达式从字符串中提取值(出于性能原因)。 情况可能如下:
结果分离的[label,value]数组应为:
我研究了解决方案,甚至找到了一个流行的库,它只是将整个字符串拆分成值,例如'RED,100'.split(/,/)可能就可以了。
但是我试图用逗号制作一个正则表达式,仅当该逗号未包含在引号类型值中时才拆分。
这不是标准的CSV行为。 但是对于最终用户而言,输入值非常容易。 输入标签,值。 做任何内在价值,如果多数民众赞成在引号包围。 如果要包含引号,请使用反斜杠。
任何帮助表示赞赏。
您可以使用此正则表达式来处理字符串中的转义引号:
/"[^"\\]*(?:\\.[^"\\]*)*"|[^,"]+/g
RegEx说明:
"
:匹配文字开头的引号 [^"\\\\]*
:匹配非\\
且不带引号的任何字符的0个或多个 (?:\\\\.[^"\\\\]*)*
:后跟转义字符和另一个非引号,非\\
。匹配此组合中的0个或多个字符以获取所有转义字符 "
:匹配结束语 |
:OR(交替) [^,"]+
:匹配非引号,非逗号字符串的1+ const regex = /"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|[^,"]+/g; const arr = [`RED,100`, `RED,"100"`, `RED,"100,"`, `RED,"100\\\\"ABC\\\\"200"`]; let m; for (var i = 0; i < arr.length; i++) { var str = arr[i]; var result = []; while ((m = regex.exec(str)) !== null) { result.push(m[0]); } console.log("Input:", str, ":: Result =>", result); }
您可以使用String#match
并仅接受组。
var array = ['RED,100', 'RED,"100"', 'RED,"100,"', 'RED,"100\\"ABC\\"200"']; console.log(array.map(s => s.match(/^([^,]+),(.*)$/).slice(1)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.