string.split(/(,\ n \ n \ s +)/)做了什么

时间:2013-08-30 14:41:03

标签: javascript regex

我看到了像这样的代码片段

// o is a string
var o = JSON.stringify({
"name": "my title",
"version": "0.0.2",
"description": "my desc",
"main": "index.js"}, null, 2)

o.split(/(,\n\s+)/)
.map(function (e, i) {
  return i%2 ? '\n'+e.substring(4)+' ,' : e
})
.join('');

分裂函数中/(,\n\s+)/做什么?

3 个答案:

答案 0 :(得分:3)

/(,\n\s+)/是一个与逗号匹配的正则表达式字面值,后跟换行符,后跟至少一个空格。

您可以在此处详细了解正则表达式:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

答案 1 :(得分:1)

看起来它试图拆分缩进的JSON片段以分离键值对。这种方法非常脆弱,因为它假定了片段的确切格式。如果存在例如,则它不起作用。在换行符之前的逗号之后的空格。在许多情况下,这不起作用。因此,除非在特定JSON格式保密的环境中使用,否则代码可能会被视为弱。

答案 2 :(得分:0)

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split 捕获括号示例string.split([separator][, limit])

如果分隔符包含捕获括号,则在数组中返回匹配的结果。

var myString = "Hello 1 word. Sentence number 2.";
var splits = myString.split(/(\d)/);

console.log(splits);