我有以下字符串...
'(!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
函数中以保留以下内容?我对regex
不太满意。
答案 0 :(得分:1)
您可以使用:
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+
:匹配任何单词