javascript - Vanilla Javascript split(regex) 来匹配前面没有逗号的空格?

标签 javascript regex

令人沮丧的是,我知道 javascript 不支持lookbehinds,这会使这个任务变得非常简单。

我有一个用户输入的字符串,因此语法必须简单,因此我有一个列表列表,整个列表由空格分隔,子列表由逗号分隔。 (这是针对搜索引擎的,因此为什么一个输入会捕获如此多的内容)所以它可能就像......

乔恩、乔4、嘉莉、史蒂夫17A 14、13、12、37

第一个列表的元素永远不能包含空格(因此无逗号空格是一个可靠的点)Jon, Joe4, Carrie, Steve17A 与第二个列表 14, 13, 12, 7 前面没有逗号的空格。我也总是可以指望第一个列表总是

我尝试了一些正则表达式

  • ([^,])(?!,)\s - 在分割场景中不起作用。在替换场景中,我可以使用 1 美元。

  • (?!,\s) - 不起作用,原因我不完全确定。它匹配逗号后面的空格。

我的意图是说List1 = Lists.split(regex)

我可以用replace()编造一些东西..类似

List1 = Lists.replace(/([^,])\s+.*/,"$1");

这在这种情况下会起作用,但可能超出了需要做的范围。除了调用 XRegExp (如果可行的话)之外,还有更好的方法吗?我已经很好地编写了所有内容,而没有涉及我不想将其引入一次用途的库。

最佳答案

只需将逗号和空格替换为逗号,然后按空格拆分以获得两个组,然后按逗号拆分以获得部分

var lists  = 'Jon, Joe4, Carrie, Steve17A 14, 13, 12, 37';
var groups = lists.replace(/,\s+/g,',').split(' ');

var parts1 = groups[0].split(',');

FIDDLE

关于javascript - Vanilla Javascript split(regex) 来匹配前面没有逗号的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573022/

相关文章:

javascript - 为 Tesseract OCR 制作训练数据时的 font_properties 是什么?

javascript - 将反斜杠逗号替换为双反斜杠逗号

javascript - 从 webWorker 访问 localStorage

具有只读属性的 Javascript 对象

javascript - karma 覆盖 + RequireJS : Misleading coverage reports

javascript - Jest.js - 测试是否已调用组件方法(React.js)

php - html 标签之外的自动链接 url

javascript - 验证文件时在正则表达式中允许空格

javascript - js 正则表达式匹配以 X 开头而不是 Y 开头的路径

java - 如何从java中的字符串中提取多个正则表达式匹配