0
我有一个用于验证URL的正则表达式。但我不想匹配包含字符“@”的网址。我该如何解决这个问题?找到一种方法来匹配包含@的正则表达式中的@
regexp = /((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
我有一个用于验证URL的正则表达式。但我不想匹配包含字符“@”的网址。我该如何解决这个问题?找到一种方法来匹配包含@的正则表达式中的@
regexp = /((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
嗯,你总是可以先检查一下,如果你的网址中包含@
使用indexOf()
,一个字符串的方法。如果它返回的数字不是-1
,则说明您的网址包含@
。如果没有,请继续使用您的正则表达式。
编辑:您可以使用此代码:
if(myString.indexOf('@') == -1 && myString.match(regexp)) {
return true;
}
else {
return false;
}
从而可以进一步简化为:
return myString.indexOf('@') == -1 && myString.match(myString);
由于去@idealmachine提供了这个代码比我更快。
这应该做:
regexp = /((ftp|http|https):\/\/)?[^\/:\s]+(:[0-9]+)?(\/[^@]*)?/;
+1的正则表达式不延伸到更小可读一塌糊涂。 – jwueller 2010-11-26 09:27:29