我想将所有值与此模式匹配:@[\S]+
。这将用于在评论中@
之后获取所有名称。例如:
Here are some people: @Name1, @Name2, @Name3, @Name4
应该返回:["Name1", "Name2", "Name3", "Name4"]
我尝试使用comment.match(/@[\S]+/ig)
,但这会返回一个带有@
符号的数组。我试图用括号封装模式:comment.match(/@([\S]+)/ig)
但这也无济于事。可能有超过10个匹配的名称,因此无法使用RegExp,我宁愿不必遍历数组并将其删除。
帮助赞赏:)。
答案 0 :(得分:1)
使用正面看法
/(?<=@)\S+/
/编辑 我读过JavaScript并不支持lookbehinds。所以我建议使用:
result.map(function(a) {a.slice(1)})
每个
答案 1 :(得分:1)
作为@KrzysztofWende,您可以使用后面的方法,或者您可以使用捕获组:
使用正则表达式:
/@(\w+)/ig
我将\S
替换为\w
,否则逗号(,
)也会与Name1
匹配。
然后代码为:
var myString = "Here are some people: @Name1, @Name2, @Name3, @Name4";
var myRegexp = /@(\w+)/ig;
var match = myRegexp.exec(myString);
alert(match[1]);//do something useful with match[1]
或者如果你需要迭代所有可能的匹配:
var myString = "Here are some people: @Name1, @Name2, @Name3, @Name4";
var myRegexp = /@(\w+)/ig;
var match = myRegexp.exec(myString);
while (match != null) {
alert(match[1]);
match = myRegexp.exec(myString);
}
该解决方案使用捕获组:它从1
开始编号括号(0
是总匹配)。在这种情况下,群组1
因此为(\w+)
。