Javascript Regex - 忽略2个字符之间的某些字符

Alv*_*par 4 javascript regex

我需要在空格字符('')上拆分字符串,但同时排除 2个特定字符(比如单引号)内的任何空格.

这是一个示例字符串:

这是第一个令牌,这是第二个令牌'这是第三个令牌'

输出数组应如下所示:

[0] = This-is-first-token
[1] = This-is-second-token
[2] = 'This is third token'
Run Code Online (Sandbox Code Playgroud)

问题:这可以通过正则表达式优雅地完成吗?

eli*_*ide 10

简答:

一个简单的正则表达式将是:

/'[^']+'|[^\s]+/g
Run Code Online (Sandbox Code Playgroud)

示例代码:

data = "This-is-first-token This-is-second-token 'This is third token'";
data.match(/'[^']+'|[^\s]+/g);
Run Code Online (Sandbox Code Playgroud)

结果:

["This-is-first-token", "This-is-second-token", "'This is third token'"]
Run Code Online (Sandbox Code Playgroud)

说明:

正则表达式可视化

Debuggex演示

我认为这很简单,你可以只用正则表达式.

g在年底成为全球性的比赛,所以你得到所有三场比赛.没有它,你只得到第一个字符串.

\s匹配所有空格(基本上 and tabs, in this instance). So, it would work even if there was a tab between This-is-first-token和之间有一个标签,它也会起作用This-is-second-token.

要匹配大括号中的内容,请使用以下命令:

data.match(/\{[^\}]+\}|[^\s]+/g);
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

大括号或单引号:

data.match(/\{[^\}]+\}|'[^']+'|[^\s]+/g);
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

  • 我会用`[^ ​​\ s] +`而不是`[^] +` (2认同)