Javascript 正则表达式匹配所有单词,但以特殊字符开头和结尾的单词除外

Javascript 正则表达式匹配所有单词,但以特殊字符开头和结尾的单词除外,javascript,regex,Javascript,Regex,我正在努力使用Javascript的正则表达式 这是一个字符串,我想从中匹配所有单词,但前缀为\+\s,后缀为\s\+: 这是我的+烂+例子 正则表达式应匹配: 这是我的+crappy+示例 比赛一:这是 比赛2:我的 根据所需输出匹配3:示例。从索引1中获取匹配的组 ([\w-]+)|\+\s\w+\s\+ 您可以在上下文中使用alternation操作符,将要排除的内容放在左侧(说扔掉它,它是垃圾),并将要匹配的内容放在右侧的捕获组中 \+[^+]+\+|([\w-]+) 示例: va

我正在努力使用Javascript的正则表达式

这是一个字符串,我想从中匹配所有单词,但前缀为\+\s,后缀为\s\+:

这是我的+烂+例子

正则表达式应匹配:

这是我的+crappy+示例

比赛一:这是

比赛2:我的


根据所需输出匹配3:示例。从索引1中获取匹配的组

([\w-]+)|\+\s\w+\s\+


您可以在上下文中使用alternation操作符,将要排除的内容放在左侧(说扔掉它,它是垃圾),并将要匹配的内容放在右侧的捕获组中

\+[^+]+\+|([\w-]+)
示例

var re = /\+[^+]+\+|([\w-]+)/g,
    s  = "this-is my + crappy + example",
    match,
    results = [];

while (match = re.exec(s)) {
   results.push(match[1]);
}

console.log(results.filter(Boolean)) //=> [ 'this-is', 'my', 'example' ]
或者,您可以替换
+
字符,然后匹配您的单词

var s = 'this-is my + crappy + example',
    r = s.replace(/\+[^+]*\+/g, '').match(/[\w-]+/g)

console.log(r) //=> [ 'this-is', 'my', 'example' ]

非常感谢,你甚至把js代码运行它!太好了,谢谢你提供这些额外的信息。刚刚接受了你的回答,因为有更深入的解释。谢谢你的回答!你欢迎我,我想你不想分两步来做。首先替换,然后匹配。阅读更多已经完成的内容,但是我使用了一个消极的lookhead,朝着一个过于复杂的方向看。当你看到它时,这个解决方案似乎是显而易见的;)。嗯,我不是一个真正的regex忍者多一点的练习可能会帮助我!您可以从演示中获得代码。单击代码生成器选项卡。
var s = 'this-is my + crappy + example',
    r = s.replace(/\+[^+]*\+/g, '').match(/[\w-]+/g)

console.log(r) //=> [ 'this-is', 'my', 'example' ]