JavaScript 按多个分隔符分割并保留引用的文本

标签 javascript regex

我有以下字符串...

'(!false >=stuff 300 OR 200 "TEST DATA")'

我弄清楚如何使用以下内容保留引用的文本...

test.match(/\w+|"[^"]+"/g)

但是,输出不是我想要的......

[ 'false', 'stuff', '300', 'OR', '200', '"TEST DATA"' ]

有一个我需要保留的符号列表...

{'<', '>', '<=', '=>', '=', '!'}

这样我的分割应该如下所示......

['(', '!', 'false', '>=', 'stuff', '300', 'OR', '200', '"TEST DATA"', ')']

如何添加到我的 match 函数中以保留以下内容?我不太擅长正则表达式

最佳答案

您可以使用:

let str = '(!false >=stuff 300 OR 200 "TEST DATA")'

let arr = str.match(/"[^"]*"|[<>]=|[^\w\s]|\w+/g)

console.log(arr)
//=> ["(", "!", "false", ">=", "stuff", "300", "OR", "200", ""TEST DATA"", ")"]

正则表达式有以下替代方案:

  • "[^"]*" : 匹配带引号的字符串
  • [<>]= :匹配<=>=
  • [^\w\s] :匹配任何非空格、非单词字符
  • \w+ :匹配任何单词

关于JavaScript 按多个分隔符分割并保留引用的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691402/

相关文章:

javascript - 文本中特殊字符和字符串模式的正则表达式

javascript - 事件流数据未显示在 Chrome 控制台中

c - 如何使用 pcre 库替换字符串中的子字符串?

python re.search regex - 如何在字符串的最后 4 位中搜索值

java - console.readLine() 和 console.format() : What is meant by arguments referenced by format specifiers?

javascript - 从 AJAX 请求中检索值的函数

javascript - 在模块模式中访问 jQuery 对象

javascript - 检查脚本何时加载

javascript - 正则表达式在第 n 次出现的字符处剪切字符串并返回字符串的第一部分

regex - Solr使用正则表达式搜索facets名称