Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我如何用javascript编写一个正则表达式来匹配所有类似twitter的提及@something,但不匹配电子邮件地址 我需要在一个巨大的文本字段中捕获无限数量的提及。应捕获@前面有不可打印字符和括号的字符串。您可以使用此正则表达式 /(\s|^)@[^\s]+/ \s表示空间。您可以使用此正则表达式 /(\s|^)@[^\s]+/ /(?<!\w)@\w+/g \s代表空间 /(?<!\w)@\w+/g 这将是一个简单的解决方案,但由于JavaScript不支持,它将成

我如何用javascript编写一个正则表达式来匹配所有类似twitter的提及@something,但不匹配电子邮件地址

我需要在一个巨大的文本字段中捕获无限数量的提及。应捕获@前面有不可打印字符和括号的字符串。

您可以使用此正则表达式

/(\s|^)@[^\s]+/
\s表示空间。

您可以使用此正则表达式

/(\s|^)@[^\s]+/
/(?<!\w)@\w+/g
\s代表空间

/(?<!\w)@\w+/g
这将是一个简单的解决方案,但由于JavaScript不支持,它将成为一项非常重要的任务:

var matches = str.match(/(^|\W)@\w+/g);
for (var i=0; i<matches.length; i++)
    matches[i] = matches[i].replace(/^[^@]/, "");
如果您想在编辑时支持更大范围的字符,可以使用

/? 这将是一个简单的解决方案,但由于JavaScript不支持,它将成为一项非常重要的任务:

var matches = str.match(/(^|\W)@\w+/g);
for (var i=0; i<matches.length; i++)
    matches[i] = matches[i].replace(/^[^@]/, "");
如果您想在编辑时支持更大范围的字符,可以使用


/快速回答您的问题:

var re = /\s@[\w\-]/ 

请注意,例如,您可以在控制台Firebug中看到正则表达式的结果。

请快速回答:

var re = /\s@[\w\-]/ 

请注意,例如,您可以在控制台Firebug中看到正则表达式的结果。

它不是类似于^@[a-zA-Z0-9]+$吗?我不知道还有哪些字符是允许的,但只要把它们加在括号中就行了。它不是像^@[a-zA-Z0-9]+$这样的东西吗?我不知道还允许使用哪些字符,只需将它们添加到括号中即可。太糟糕了,JavaScript正则表达式没有lookbehind断言。根据需要,在括号内添加标点符号,如\s | \ |^。太糟糕了,JavaScript正则表达式没有lookbehind断言。根据您的需要,在括号内添加标点符号,如\s \ \ \^。好的,但是如何一次捕获所有提及的内容?好的,但是如何一次捕获所有提及的内容?