javascript - 通过正则表达式拆分是重复参数 NodeJs

标签 javascript node.js regex

我正在通过正则表达式拆分代码,它正在做(某种程度上)正确的事情……直到字符串结束。这会是我的正则表达式的问题吗?如果是这样,我该如何解决?

代码:

let args = line.split(/\s(?=(([^"]*"){2})*[^"]*$)/);
console.log("LINE: "+line)
console.log("SPLIT: "+JSON.stringify(args))

输出:

LINE: var String: test = "Hello"
SPLIT: ["var","String: test = \"Hello\"","Hello\"","String:","test = \"Hello\"","Hello\"","test","= \"Hello\"","Hello\"","=","\"Hello\"","Hello\"","\"Hello\""]

预期输出:

LINE: var String: test = "Hello"
SPLIT: ["var", "String:", "test", "=", "\"Hello\""]

最佳答案

我会使用 String.match(regex) 而不是 String.split(regex)。我会设计一个具有以下特征的正则表达式:

  • 捕获=,或者
  • 捕获带引号的字符串,或者
  • 捕获不带引号的字母串
  • 并添加一个可选的 ':' 后缀

例如

let line = `var String: test = "Hello"`;
let m = line.match(/(=|"[^"]*"|\w+):?/g);
console.log(m);
// [ "var", "String:", "test", "=", "\"Hello\"" ]

关于javascript - 通过正则表达式拆分是重复参数 NodeJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73779970/

相关文章:

javascript - 这段代码中函数末尾的 0 表示什么?

node.js - Sails.js 升级到 v1 反向区分大小写的查询

javascript - 用 span 包裹每个字符,但保持 HTML 格式

regex - 提取与模式匹配的文件名并删除重复项并存储在数组中

javascript - 在 ECMAScript 中检查空字符串时,为什么我应该使用 string.length == 0 而不是 string == ""?

javascript - 单元测试通用/同构 Node 包文件

javascript - Knockout.js 从 observableArray 中提取元素返回未定义

javascript - Node.js:Map 函数不适用于来自 PostgreSQL 的查询

node.js - 使用 mongoose 更新 mongodb 记录中的数组

Python:链接的关键字