Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 找到一种方法来克服';与正则表达式中包含@的URL不匹配_Javascript_Regex - Fatal编程技术网

Javascript 找到一种方法来克服';与正则表达式中包含@的URL不匹配

Javascript 找到一种方法来克服';与正则表达式中包含@的URL不匹配,javascript,regex,Javascript,Regex,我有一个用于验证URL的正则表达式。但我不想匹配包含字符“@”的URL。我怎样才能解决这个问题 regexp = /((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 首先,您可以使用字符串方法indexOf(),检查您的url是否包含@。如果返回的数字不是-1,则您的url包含@。如果没有,请继续使用正则表达式 编辑:您可以使用以下代码: if( myStrin

我有一个用于验证URL的正则表达式。但我不想匹配包含字符“@”的URL。我怎样才能解决这个问题

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

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

编辑:您可以使用以下代码:

if( myString.indexOf('@') == -1 && myString.match(regexp)) { 
    return true; 
} 
else { 
    return false; 
}
可进一步缩短为:

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

感谢@idealmachine比我更快地提供了这段代码。

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

编辑:您可以使用以下代码:

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]+)?(\/[^@]*)?/;
这应该做到:

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

+感谢你没有将正则表达式扩展到更难理解的混乱。你能给我举个例子吗?这是我的代码:regexp=/((ftp | http | https):\/\/)(\w+:{0,1}\w*@)(\S+)(:[0-9]+)(\/\/([\w#!:?+=&%@!\/]);如果(myString.match(regexp)){return true;}或者{return false;}一个例子是:
return myString.indexOf('@')=-1&®exp.test(myString)+1,用于不将正则表达式扩展到可读性更低的混乱。您能给我举个例子吗?这是我的代码:regexp=/((ftp | http | https):\/\/)(\w+:{0,1}\w*@)(\S+)(:[0-9]+)(\/\/([\w#!:?+=&%@!\/]);如果(myString.match(regexp)){return true;}或者{return false;}一个例子是:
return myString.indexOf('@')=-1&®exp.test(myString)