我有这个代码:
@H_404_2@var r = /(?:^\s*([^\s]*)\s*)(?:,\s*([^\s]*)\s*){0,}$/
var s = " a,b,c "
var m = s.match(r)
m => [" a,c ","a","c"]
看起来整个字符串已经匹配,但是哪里有“b”了?我宁愿得到:
@H_404_2@[" a,"b","c"]所以我可以用s.split(‘,’)的结果做m.shift(),也可以删除空格.
我在正则表达式中有错误,还是误解String.prototype.match?
解决方法@H_301_14@
这是一个很简单&直接的方式来做到这一点,而不需要复杂的正则表达式.
@H_404_2@var str = " a,c "
var arr = str.split(",").map(function(item) {
return item.trim();
});
//arr = ["a","c"]
IE9及以上版本支持nativemap.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
或者在ES6 / TypeScript中,它变得更短:
@H_404_2@var arr = str.split(",").map((item) => item.trim());
IE9及以上版本支持nativemap.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
或者在ES6 / TypeScript中,它变得更短:
@H_404_2@var arr = str.split(",").map((item) => item.trim());