Javascript 正则表达式逗号分隔文本

标签 javascript regex regex-negation regex-lookarounds

我有这个字符串:

远程:城市|维斯塔维亚山,阿拉巴马州,远程:城州|维斯塔维亚山,395b5231539390675a7abe0751fc4820,远程:城市|维斯塔维亚山,阿拉巴马州,远程:城州|维斯塔维亚山,395b5231539390675a7abe0751fc4 820

我想匹配并提取以逗号分隔的字符串。

结果应该是:

MATCH 1 
'remote:City|Vestavia Hills,AL' 
MATCH 2 
'remote:Citystate|Vestavia Hills' 
MATCH 3 
'395b5231539390675a7abe0751fc4820' 
MATCH 4 
'remote:City|Vestavia Hills,AL' 
MATCH 5 
'remote:Citystate|Vestavia Hills' 
MATCH 6 
'395b5231539390675a7abe0751fc4820'

我有这个正则表达式:

(remote:[a-zA-Z]+\|[^\,]+|[a-f0-9]{32})

但是那些状态为“AL”(用逗号分隔)的城市分隔不正确。

可能的解决方案:

我正在考虑做这样的事情 - remote:[a-zA-Z]+\|.* - 并在逗号上结束匹配,其后有 self (remote :[a-zA-Z]+\|.*) 或 md5 哈希 ([a-f0-9]{32},?)。

这是我的正则表达式测试器链接:

https://regex101.com/r/rP8iJ2/1

最佳答案

使用单个正则表达式,您可以执行以下操作;

var str = "remote:City|Vestavia Hills,AL,remote:Citystate|Vestavia Hills,395b5231539390675a7abe0751fc4820,remote:City|Vestavia Hills,AL,remote:Citystate|Vestavia Hills,395b5231539390675a7abe0751fc4820",
    arr = str.match(/(r.+?|[\da-f]{32})(?=,?(remote|[\da-f]{32}|$))/g);
console.log(arr);

关于Javascript 正则表达式逗号分隔文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39676622/

相关文章:

java - 使用 String.split 进行多条件分割

python - 正则表达式的字符串掩码和偏移量

regex - 在 Linux 服务器上使用 "find"和正则表达式否定

正则表达式匹配除引号之间的单词之外的所有内容

javascript - 在 console.log 中,状态已更新,它也通过 props 反射(reflect)出来,但是组件没有重新渲染

javascript - 如何获取异步函数以返回文本

JavaScript 如何比较两个数组之间的值?

名为 "action"的 JavaScript 函数

regex - 如何将一个字符串附加到文件中所有出现的另一个字符串

regex - 在 Open Office calc 中搜索并替换正则表达式