Javascript检查Url以及Url是否包含字符串

Javascript检查Url以及Url是否包含字符串,javascript,regex,Javascript,Regex,我有这个功能,检查输入的Url是否有效。 问题是我还需要知道这个Url是否来自facebook.com。 如果不是,则Url不应被视为有效。 我如何编辑下面的函数,使其期望一个包含facebook.com字符串的Url function isUrl(s) { var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ return regexp.test

我有这个功能,检查输入的Url是否有效。 问题是我还需要知道这个Url是否来自facebook.com。 如果不是,则Url不应被视为有效。 我如何编辑下面的函数,使其期望一个包含facebook.com字符串的Url

function isUrl(s) {

var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}

使用以下工具进行类似操作不太复杂:


使用以下工具进行类似操作不太复杂:

提示:我不会修改我的isUrl方法,因为如果你需要为另一个url使用这个函数,那么除了facebook以外的任何东西都是允许的。我会将其分解为以下代码:

function isUrl(s) {
  var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
  return regexp.test(s);
}

function isFacebookUrl(s) {
  return isUrl(s) && s.indexOf('facebook.com') > -1;
}

提示:我不会修改我的isUrl方法,因为如果你需要为另一个url使用这个函数,那么除了facebook以外的任何东西都是允许的。我会将其分解为以下代码:

function isUrl(s) {
  var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
  return regexp.test(s);
}

function isFacebookUrl(s) {
  return isUrl(s) && s.indexOf('facebook.com') > -1;
}

将您的返回声明更改为:

return s.indexOf("facebook.com") > -1 && regexp.test(s);

将您的返回声明更改为:

return s.indexOf("facebook.com") > -1 && regexp.test(s);

不要只测试
facebook.com
是否在字符串中,因为它几乎可以位于字符串中的任何位置,例如查询字符串中

这应该匹配任何
facebook.com
域(以及
mail.facebook.com
等子域)。我还对它做了一点修改,使它更精确。。(虽然不完美,但你应该从这里开始)


不要只测试
facebook.com
是否在字符串中,因为它几乎可以位于字符串中的任何位置,例如查询字符串中

这应该匹配任何
facebook.com
域(以及
mail.facebook.com
等子域)。我还对它做了一点修改,使它更精确。。(虽然不完美,但你应该从这里开始)


您可以修改regex。。。。或者一个快速而肮脏的解决方案可能是。。。在使用正则表达式之前检查URL是否以开头。当然,您也希望涵盖https。

您可以修改regex。。。。或者一个快速而肮脏的解决方案可能是。。。在使用正则表达式之前检查URL是否以开头。当然,您也希望涵盖https。

当然,这不是理想的解决方案,您在回答中也提到了这一点。但是,如果他确信他不会在查询字符串中包含facebook.com,我的答案可能是最简单、最干净的解决方案,我自己对你的答案投了赞成票,因为这是“正确的”答案当然这不是理想的解决方案,你在回答中提到了这一点。但是,如果他确信自己不会在查询字符串中包含facebook.com,我的答案可能是最简单、最干净的解决方案,我自己投票支持你的答案,因为这是“正确”的答案
var regexp = /(ftp|http|https)(:\/\/)(www\.)?([a-zA-Z0-9]+\.)*(facebook\.com)(:[0-9]+)?(\/[a-zA-Z0-9]*)?/ ;