使用正则表达式从字符串中获取值

时间:2018-08-16 18:58:29

标签: node.js regex

我有这个例子:

<@445288012218368010>

我想从<@>符号之间获取值。 我是这样尝试的:

string.replace(/^(?:\<\@)(?:.*)(?:\>)$/gim, '');

但是,我没有任何结果。它将删除/删除整个字符串。 我只需要这一部分:445288012218368010(它是动态的,所以它不是相同的数字)。 无论如何,这是针对不和谐聊天机器人的,我知道还有其他方法可以检查提到的名称,但是我想在正则表达式中执行此操作,因为我尝试执行的操作无法采用通用方法。 是的,如何从这些符号之间获取值? 我需要在node.js正则表达式中使用它。

2 个答案:

答案 0 :(得分:0)

您可以使用String#match,它将返回字符串的正则表达式匹配项(在这种情况下,RegExp为\d+\d+的括号使<string>.match(/<@(\d+)>/)成为其自己的这样,您可以使用<string>.match(/<@(\d+)>/)[1]来获取正则表达式结果,并可以使用$(document).ready(function() { $(".menu-icon").on("click", function() { $("nav ul").toggleClass("showing"); }); // add this instruction ! setTimeout(function() {plusSlides(1) }, 1000) }) 来获取正则表达式的第一组(在本例中为数字)。

答案 1 :(得分:0)

您使用正则表达式进行匹配,但是您使用了一个非捕获组(?:.*),因此您获得了完全匹配并将其替换为空字符串。请注意,您可以省略第一个和第三个非捕获组,而改为使用<@>

您可以使用捕获组([^>]+)(\d+)匹配括号之间的内容,并使用replace并替换中引用第一个捕获组$1

console.log("<@445288012218368010>".replace(/^<@([^>]+)>$/gim, '$1'));