Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Javascript 用于获取@和之后的正则表达式_Javascript_Regex - Fatal编程技术网

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
    应该可以正常工作,因为正则表达式永远不会匹配空字符串,索引也会随之移动。