javascript - 使用 RegExp 匹配多个实例并存储值 (JavaScript)

标签 javascript regex pattern-matching

我想将所有值与此模式匹配:@[\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+)

JSFiddle demo .

关于javascript - 使用 RegExp 匹配多个实例并存储值 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810050/

相关文章:

mysql:比较两列

erlang - 在 Erlang (Elixir) 中对作为元组的记录进行模式匹配

scala - Scala 中的模式匹配结构类型

javascript - 在云函数中解析表单数据zip文件

Ruby 字符串操作不适用于捕获的组

javascript - React 组件 - HTML 模板的存储位置

c# - 部分文本搜索的快速算法

sql - 与 CLOB 一起使用的类似 UTL_MATCH 的函数

javascript - 检测混合应用程序中的初始网络状态

javascript - WordPress - Google Map API 标签/进度图 + BuddyPress 成员(member)数