Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用正则表达式从字符串中获取值_Node.js_Regex - Fatal编程技术网

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

Node.js 使用正则表达式从字符串中获取值,node.js,regex,Node.js,Regex,我举个例子: <@445288012218368010> 我想从符号之间得到值。 我试过: string.replace(/^(?:\<\@)(?:.*)(?:\>)$/gim, ''); string.replace(/^(?:\)$/gim,”); 但是我没有得到任何结果。它将删除/删除整个字符串。 我只想要这个部分:4452801021218368010(它将是动态的,所以是的,它将不是相同的数字)。 不管怎么说,这是针对discord聊天机器人的,我知道

我举个例子:

<@445288012218368010>

我想从符号之间得到值。 我试过:

string.replace(/^(?:\<\@)(?:.*)(?:\>)$/gim, '');
string.replace(/^(?:\)$/gim,”);
但是我没有得到任何结果。它将删除/删除整个字符串。 我只想要这个部分:4452801021218368010(它将是动态的,所以是的,它将不是相同的数字)。 不管怎么说,这是针对discord聊天机器人的,我知道还有其他方法可以检查提到的名字,但我想在正则表达式中这样做,因为我尝试做的事情不能用普通方法。 那么,是的,我怎样才能从这些符号之间得到值呢?
我在node.js regex中需要它。

您可以使用String#match,它将返回字符串的正则表达式匹配项(在这种情况下,RegExp将是
\d+
周围的括号使
\d+
成为它自己的组)。这样您可以使用
.match(//)
获取正则表达式结果,并
匹配(//)[1]
获取正则表达式的第一组(在本例中为数字)。

正则表达式匹配,但使用非捕获组
(?:*)
因此,您可以获得完整匹配,并用空字符串替换。请注意,您可以省略第一个和第三个非捕获组,而改用

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


console.log(“.replace(/^]+)>$/gim,$1”)
您发布的字符串看起来像是Discord用户提及的内容,您可能希望使用
作为正则表达式,也可以从昵称提及中获取ID(Discord对此(
)使用略有不同的提及方式)谢谢:)我将在9分钟后接受您的回答,因为网站现在不允许(再次感谢你)