Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 以http://或https://开头的URL,用逗号分隔,不带空格_Javascript_Regex - Fatal编程技术网

Javascript 以http://或https://开头的URL,用逗号分隔,不带空格

Javascript 以http://或https://开头的URL,用逗号分隔,不带空格,javascript,regex,Javascript,Regex,我需要检查一个用户插入URL的字段。这些规则是: 没有空间 用逗号分隔 每个URL必须以http://或https开头:// 输入文本的有效示例: “” “” “” 一些无效的例子: “” “anotherbadone.com” “nomoreideas.com,badurl.com” “,” 这是我的正则表达式,但工作不正常: /(^([\S]https?:\/\/)\w+(?:\.\w+)*\.\w{2,})$*/i 您的实际正则表达式不正确,因为当您在正则表达式开头使用[\S

我需要检查一个用户插入URL的字段。这些规则是:

  • 没有空间
  • 用逗号分隔
  • 每个URL必须以http://或https开头://
输入文本的有效示例:

  • “”

  • “”

  • “”
一些无效的例子:

  • “”
  • “anotherbadone.com”
  • “nomoreideas.com,badurl.com”
  • “,”
这是我的正则表达式,但工作不正常:

/(^([\S]https?:\/\/)\w+(?:\.\w+)*\.\w{2,})$*/i

您的实际正则表达式不正确,因为当您在正则表达式开头使用
[\S]https
时,它接受
http
之前的任何非空白字符

我建议结合使用
Array
函数和,以确保所有输入的URL都是正确的

首先用逗号拆分输入值并获取URL数组:

var urls = document.getElementById("urls").value.split(",");
urls = urls.map(u => u.trim()).filter(v => v !== '');
然后检查所有URL是否与
/^https?:\/\/(\w+)\[a-z\]{2,3}$/

let valid = urls.every(url => url.match(/^https?:\/\/(\w+)\.[a-z]{2,3}$/));
演示:

document.getElementById(“URL”).onchange=function(){
var url=document.getElementById(“URL”).value.split(“,”);
url=url.map(u=>u.trim()).filter(v=>v!='');
日志(URL);
让valid=url.every(url=>url.match(/^https?:\/\/(\w+)\[a-z]{2,3}$/);
console.log(有效);
}

您可以尝试使用以下方法:

^(?:https?:\/\/\w+\.\w+,?)*$
这是非常基本的,不提供广泛的url验证,例如拼写错误的顶级域(.com vs.cmo)

只需捕获您的模式
https?:\/\/\w+\.\w+,?
并递归
(?1)
,根据需要允许使用可选的逗号


什么工作不正常?您试图与
[\S]https
中的
\S
匹配什么?您正在匹配任何非空白字符,但我认为http将是字符串的开头。最重要的是,您正在尝试捕获它。Hi@UweKeim,根据规则,无效URL是匹配的。例如:htt://test.com,blahblahblah.com“@K.Dᴀᴠɪs,与删除\s无关,它不起作用。我刚刚分享了最后一次尝试。谢谢@chŝdk。它似乎在大多数情况下都有效。但当允许空白时失败。我认为稍微调整一下就足够了@VitorEduardodaSilva请看一下我使用的编辑代码。我认为这是有史以来最好的。但是JS不支持这种味道。啊,你说得对。实际上,您甚至根本不需要递归第一个捕获组-我在测试某些内容时将它放在那里,但后来忘记将其删除。你可以用