Javascript 用于获取@和之后的正则表达式
我正在尝试为字符串筛选创建正则表达式。我想得到符号“@”以及在它之后和空格之前写的任何东西 有人能帮我吗 例如:Javascript 用于获取@和之后的正则表达式,javascript,regex,Javascript,Regex,我正在尝试为字符串筛选创建正则表达式。我想得到符号“@”以及在它之后和空格之前写的任何东西 有人能帮我吗 例如: hi I am @vaibhav . 此正则表达式应该给出的预期结果是vaibhav 我做了这个: /@[a-z]*/ 但是,我不确定这是否符合上述标准。您可以使用 编辑版本: (?<=@)\w+ (?要从@获取子字符串,直到它后面的第一个空格,请使用 @\S+ 看 \S表示非空白字符 如果不需要@,请使用捕获组: @(\S+) 您需要的值将位于组1中。请参阅 如果您
hi I am @vaibhav .
此正则表达式应该给出的预期结果是vaibhav
我做了这个:
/@[a-z]*/
但是,我不确定这是否符合上述标准。您可以使用
编辑版本:
(?<=@)\w+
(?要从@
获取子字符串,直到它后面的第一个空格,请使用
@\S+
看
\S
表示非空白字符
如果不需要@
,请使用捕获组:
@(\S+)
您需要的值将位于组1中。请参阅
如果您使用的是JavaScript:
var re=/@(\S+)/g;
var str=‘你好,我是@vaibhav.hi,我是@strib’;
var-m;
while((m=re.exec(str))!==null){
document.write(“值为:+m[1]+”
);
}
最简单的解决方案是使用一个求反集
搜索不是'@'
读入'@'
现在捕获不是''
如果您试图匹配和捕获,您可以这样完成:
[^@]*@([^ ]*).*
[]
如果只想搜索,则不需要匹配整个字符串,只需提取实际匹配部分:
@([^ ]*)
[]
最复杂的情况是您需要处理转义的'@'
。下面是一个使用它的匹配示例:
(?:[^\\@]|\\.)*@([^ ]*).*
[]请..至少尝试一些最低限度的东西。很抱歉,我没有提到我的尝试..我做了这个:/@[a-z]*/但我不确定这是否符合上述标准。@vaibhav:你需要将其添加到帖子本身。是JavaScript吗?一旦你提供了语言,我们就可以帮助你编写代码。@vaibhav Your@[a-z]*
regex可以完美地只捕获小写字母字符。它不会匹配任何其他字符,如果@'
后面没有小写字母字符,它将返回一个空字符串。如果这满足您的需要,我建议提供它作为答案并接受它。唯一的问题是我们没有知道它是否是JavaScript。JS正则表达式引擎不支持look behinds。@Stribizev即使支持look behinds,它们也很昂贵,应该避免使用。特别是在像这里这样没有编排的情况下。[^@]*@([^]*).
用于Java的字符串匹配,对吗?很好,但如果
后面有换行符,则可能会失败@([^]*)
在语义上与我的建议相同,只是空格是一个文本,不考虑其他空格。@Stribizev它不会“失败”在任何情况下。如果正则表达式处于单行模式,它将为捕获返回一个空字符串。如果正则表达式处于多行模式,它将捕获换行符和所有小于或等于'
的内容。如果正则表达式处于单行模式,则您尚未在任何正则表达式中指定该模式。此外,我们仍然不知道使用了什么语言。@stRibizev默认为单线模式?因此输入字符串“hi I am@\n”将捕获:“Thank@Stribizev您的答案非常有效,我通过添加“/@(\S+)/g”为其添加了一点tweek”全局调用它,以便它可以进一步跟踪任何此类事件。您没有提到在一个输入字符串中有多个匹配项。当然,/g
应该可以正常工作,因为正则表达式永远不会匹配空字符串,索引也会随之移动。