Javascript 正则表达式 - 忽略 2 个字符之间的某些字符

标签 javascript regex

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

这是一个示例字符串:

This-is-first-token This-is-second-token 'This is third token'

输出数组应该是这样的:

[0] = This-is-first-token
[1] = This-is-second-token
[2] = 'This is third token'

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

最佳答案

简答:

用于此目的的简单正则表达式是:

/'[^']+'|[^\s]+/g

示例代码:

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

结果:

["This-is-first-token", "This-is-second-token", "'This is third token'"]

说明:

Regular expression visualization

Debuggex Demo

我认为这很简单,只要用一个正则表达式就可以做到。

末尾的 g 使其成为全局匹配项,因此您可以获得所有三个匹配项。没有它,您只会得到第一个字符串。

\s 匹配所有空格(在本例中基本上是 和制表符)。因此,即使在 This-is-first-tokenThis-is-second-token 之间有一个选项卡,它也能正常工作。

要匹配大括号中的内容,请使用:

data.match(/\{[^\}]+\}|[^\s]+/g);

Regular expression visualization

Debuggex Demo

大括号或单引号:

data.match(/\{[^\}]+\}|'[^']+'|[^\s]+/g);

Regular expression visualization

Debuggex Demo

关于Javascript 正则表达式 - 忽略 2 个字符之间的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114005/

相关文章:

asp.net - 给定一个从 asp :textbox, 生成的文本区域,使用 Javascript 或 Jquery 时,内部文本不能为 'set'

javascript - Firefox 4.0.1 忽略过期的 HTTP header

javascript - 使用 jquery,匹配单个字符后跟冒号并包装在 span 标记中

regex - 在定界符内查找特定字符

javascript - 为什么 JavaScript 中的正则表达式返回未定义?

javascript - JS Regex - 匹配每个未转义的特定字符

javascript - 如何使 HTML 页面保持事件状态

javascript - 如何在 JavaScript (.js) 文件中查找 JavaScript 函数?

java - 存储带有未知字符的字符串

php - preg_match 少于 5 个字符的单词