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