找到一种方法不匹配在正则表达式中包含@的网址

时间:2010-11-26 09:22:23

标签: javascript regex

我有一个用于验证网址的正则表达式。但我不想匹配包含字符“@”的网址。我该如何解决?

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

2 个答案:

答案 0 :(得分:4)

好吧,您可以随时首先使用字符串方法@检查您的网址是否包含indexOf()。如果它返回-1以外的数字,则您的网址包含@。如果没有,请继续使用正则表达式。

修改:您可以使用以下代码:

if( myString.indexOf('@') == -1 && myString.match(regexp)) { 
    return true; 
} 
else { 
    return false; 
}

可以进一步缩短为:

return myString.indexOf('@') == -1 && myString.match(myString);

感谢@idealmachine以比我更快的速度提供此代码。

答案 1 :(得分:0)

应该这样做:

regexp = /((ftp|http|https):\/\/)?[^\/:\s]+(:[0-9]+)?(\/[^@]*)?/;