我想将所有值与此模式匹配:@[\S]+
。这将用于获取注释中 @
之后的所有名称。示例:
这里有一些人:@Name1、@Name2、@Name3、@Name4
应返回:["Name1", "Name2", "Name3", "Name4"]
我尝试使用 comment.match(/@[\S]+/ig)
但这会返回一个带有 @
符号的数组。我尝试用括号封装该模式: comment.match(/@([\S]+)/ig)
但这也没有帮助。可能有超过 10 个匹配的名称,因此无法使用 RegExp,而且我不想遍历数组并将其删除。
感谢您的帮助:)。
最佳答案
作为@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+)
。
关于javascript - 使用 RegExp 匹配多个实例并存储值 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810050/