正则表达式以 @ 符号开头

Regular Expression starts with @ symbol

本文关键字:开头 符号 正则表达式      更新时间:2023-09-26

在正则表达式中,如何查找以@symbol开头的匹配项?符号不能位于单词中间(电子邮件地址中的链接)。

例如,如下所示的字符串:

@someone's email is blah@gmail.com and @someoneelse wants to send an email.

我会使用的表达式是/^@['w]/g

它应该返回:

@someone's

@someoneelse

我使用的表达式似乎不起作用。

您可以使用'B,这是一个非单词边界,是'b的否定版本。

var s = "@someone's email is blah@gmail.com and @someoneelse wants to send an email.",
    r = s.match(/'B@'S+/g);
console.log(r); //=> [ '@someone''s', '@someoneelse' ]

如果你使用的是JavaScript,你可以使用lodash

来自JavaScript的单词函数需要两个参数,第一个参数用于句子,第二个参数是可选的。您可以传递正则表达式,它将找到带有起始字母"@"的单词。

import _ from "lodash";
_.words(sentence, /'B@'S+/g);
/(^|'s)@'w+/g

['w]只匹配一个单词字符,所以这就是为什么你的正则表达式只返回@s'w+将匹配 1 个或多个单词字符。

如果要在行首字符串内获取单词,可以使用捕获组(^|'s)该组执行字符串开头空格字符后的单词。

演示

var str="@someone's email is blah@gmail.com and @someoneelse wants to send an email.";
console.log(str.match(/(^|'s)@'w+/g)); //["@someone", " @someoneelse"]