使用正则表达式捕获“”并分割成阵列
Using regex to capture `"` and split into array
我遇到了一些以前从未见过的东西,谷歌没有用,因为它不断从我的搜索中删除'"
。
首先,'"
是什么意思?我正在访问一个API,对于键的值之一,它是一个标签字符串,但如果其中一个标签有两个单词,它将使用'"
来显示该标签是两个单词。下的示例
"foo bar baz '"taz foo'" goo too loo"
我正试图把它们分成一个数组,就像["foo", "bar", "baz", "taz foo", "goo", "too", "loo"]
一样
然而,我很难弄清楚如何捕获'"
并制作它,这样我就可以将它们分割成如上所述的阵列。
使用String.protype.replace()来获得乐趣和利润:
var s = "foo bar baz '"taz foo'" goo too loo";
var arr = [];
s.replace(/[^'s"]+|"[^"]*"/g, function($1) {
arr.push($1.replace(/"/g,''));
});
console.log(arr); // ["foo", "bar", "baz", "taz foo", "goo", "too", "loo"]
创建一个空数组arr
以将匹配项推送到
使用replace
收集$1
匹配项:任何[^'s"]+
不是空白或双引号(一次或无限次)|
或"[^"]*"
" "
之间的任何非引用[^"]
(零或无限倍*
)
'"
表示转义双引号字符。它被称为逃跑角色。
如果要在双引号字符串中使用双引号,则必须使用转义符。
例如,假设要存储字符串abcd"xyz"abcd
console.log("abcd"xyz"abcd");
会给您一个错误,因为xyz
之前的双引号表示字符串的结束,xyz
之后的引号表示新字符串的开始,因此会因为语法不正确而出现错误。
因此,要在字符串中使用双引号,必须进行
使用'"
转义双引号
console.log("abcd'"xyz'"abcd");
或者将双引号放在单引号字符串中
console.log('abcd"xyz"abcd');
至于你的拆分问题,你可以在正则表达式上进行拆分,得到这样的数组:
> "foo bar baz '"taz foo'" goo too loo".match(/'w+|(?:")[^"]*?(?:")/g);
["foo", "bar", "baz", ""taz foo"", "goo", "too", "loo"]
然后你可以迭代数组并删除双引号,如下所示:
> '"abcd xyz"'.replace(/"/g, '');
"abcd xyz"
组合代码:
> arr="foo bar baz '"taz foo'" goo too loo".match(/'w+|"[^"]*?(?=")/g);
["foo", "bar", "baz", ""taz foo", "goo", "too", "loo"]
> for(var i=0;i<arr.length;i++){arr[i]=arr[i].replace(/"/g, '');}
> console.log(arr);
["foo", "bar", "baz", "taz foo", "goo", "too", "loo"]
相关文章:
- 使用正则表达式捕获“”并分割成阵列
- AngularJS卡片转盘:将卡片返回到阵列的末尾
- 从不同的对象创建阵列
- 阵列中随机图像的问题
- 在特定条件下从存储在localStorage中的阵列中删除对象
- 如何将图像分割成多个部分
- 如何将所有同级存储在动态本地存储阵列中
- 从localStorage添加和检索阵列
- angular.注射器阵列值未返回当前值
- 在文本区域的焦点上分割渐变
- 流星蒙戈的返回阵列
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 从2D RGB阵列创建图像
- 构建画布RGB值的2D阵列
- 图像阵列预加载时显示沙漏光标
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 为什么不是't我的“;虚拟的“;阵列工作
- Json阵列的详细信息显示在三页的angularjs中
- 从阵列中分割图像