NodeJS中的Javascript URL正则表达式问题
所以我需要抓取字符串中的所有URL,并以数组的形式返回它们 以下是我到目前为止的情况:NodeJS中的Javascript URL正则表达式问题,javascript,regex,node.js,Javascript,Regex,Node.js,所以我需要抓取字符串中的所有URL,并以数组的形式返回它们 以下是我到目前为止的情况: var comment = 'Check out www.google.com and http://bing.com'; var regexp = new RegExp('((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?', 'gi');
var comment = 'Check out www.google.com and http://bing.com';
var regexp = new RegExp('((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?', 'gi');
var urls = comment.match(regexp);
现在它不返回任何内容,而我需要它返回两个URL。我搜索过google和stack以及很多例子,但没有一个能满足我的需要
非常感谢您的帮助
谢谢
Jim您的
\
字符被解析为字符串转义,并且不会在正则表达式中结束
相反,您应该使用正则表达式文字:
/((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi
您的
\
字符将被解析为字符串转义,并且不会在正则表达式中结束
相反,您应该使用正则表达式文字:
/((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi
您始终可以使用创建一个图形,以表示Regexp允许的模式。这不是对您的问题的回答,而是帮助调试Regexp问题的一个很好的工具。您可以始终使用创建一个图来表示您的Regexp允许的模式。这不是对您问题的回答,而是一个帮助调试Regexp问题的好工具。非常感谢。我遇到的最后一个问题是,使用“查看www.google.com”这句话,它捕获了所有的单词,而我只需要它来捕获URL。想法?非常感谢你。我遇到的最后一个问题是,使用“查看www.google.com”这句话,它捕获了所有的单词,而我只需要它来捕获URL。思想?