javascript - 正则表达式:匹配单词和特殊字符,除非在引号中

标签 javascript regex

我已经查看了几乎相同的其他问题,并且通过一些自定义,我找到了一个适用于 RegExr 的解决方案。 。问题是它在 Javascript 中不起作用。

表达式:([^\s]*"[^"]+"[^\s]*)|[^"]?\w+[^"]?

测试字符串:+w1 @w2 (w3 (w4) @"w5 6"

预期结果:['+w1', '@w2', '(w3', '(w4)', '@"w5 w6"']

Javascript代码: console.log(/([^\s]*"[^"]+"[^\s]*)|[^"]?\w+[^"]?/g .exec(test_str));

Javascript 结果:["+w1 ", undefined](在 FF15 和 Chrome 22 中测试)

我查阅了 MDN 上的文档,但除了全局标志之外没有其他相关标志。只是为了尝试我添加了多行和不区分大小写的标志,但它们没有用。

你知道是什么让它在 Javascript 中崩溃,而它似乎在 RegExr 中工作吗? (Flash 的 Actionscript 不也是 ECMAScript 吗,所以 RegExr 不应该使用相同的正则表达式引擎吗?)在 RegExr 中,唯一启用的标志是全局标志。

编辑: 另一个问题是 "w1\​​"w2\"w3" 将被匹配为两个单词,而它应该是一个单词。有什么想法吗?

最佳答案

尝试:

console.log('+w1 @w2 (w3 (w4) @"w5 6"'.match(/[^"\s]+(?:".*"\S*)?/g));

关于javascript - 正则表达式:匹配单词和特殊字符,除非在引号中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898562/

相关文章:

javascript - 在 MVC razor 中使用 jQuery UI Datepicker 出现错误

javascript - 如何在 Angular 2 中从一种模型映射到另一种模型?

javascript - jquery 验证不适用于 HTML 选择标记

javascript - 如何使用 redux 对项目进行排序

PHP正则表达式

regex - 简化正则表达式 - 多个离散选项

r - 在整个分隔符处分割,但不是分隔符的每个组成部分

javascript - 为什么我的 typescript 文件无法使用 gulp typescript 正确生成为 js?

正则表达式选择括号括起来的所有字符,前提是存在等号

python - <change ://51736404> 的正则表达式匹配失败