检查javascript数组中的正则表达式字符串匹配

检查javascript数组中的正则表达式字符串匹配,javascript,arrays,regex,Javascript,Arrays,Regex,我正在为我们的定制CMS编写一些客户端验证。我需要检查文本区域中包含图像的任何URL,并让用户知道他们需要使用https而不是http 我已经找到了如何搜索任何以http开头的URL: $('#template_form').submit(function() { val = $("#template_data").val(); if (val.match(/http:\/\//)) { alert("You must set all co

我正在为我们的定制CMS编写一些客户端验证。我需要检查文本区域中包含图像的任何URL,并让用户知道他们需要使用https而不是http

我已经找到了如何搜索任何以http开头的URL:

$('#template_form').submit(function() {
        val = $("#template_data").val();
        if (val.match(/http:\/\//)) {
            alert("You must set all complete image URLs to be https!");
            $("#logError").val("true");
            return false;
        }
        return true;
    });
但这也适用于包含的任何常规链接。如果我们可以将此限制为
标记,那么会更简单,因为我可以只获取字符串的最后三个字符,然后对图像后缀数组执行
索引

我们不能这样做,虽然-图像URL可以包含在自定义标记中,它可以是
alt
参数的一部分,它可以作为直接链接发布,或者其他任何事情。是否有任何方法可以针对数组测试正则表达式,或者我需要在数组中循环并分别针对每个元素运行
String.indexOf

理想情况下,我会这样做:

suffixes = [".jpg", ",jpeg", ".png", ".gif", ".tiff", ".bmp"];
if (val.match(/http:\/\//)) && suffixes.indexOf(**some kind of regex**) {
    alert("You must set all complete image URLs to be https!");
    $("#logError").val("true");
    return false;
}

但我不太清楚该正则表达式是什么。

您可以使用图像扩展构建正则表达式:

var suffixes = ["jpg", "jpeg", "png", "gif", "tiff", "bmp"];

var re = new RegExp('http://[^>\\s]+?\.(?:' + suffixes.join('|') + ')');

if (re.test(val)) {
    alert("You must set all complete image URLs to be https!");
    $("#logError").val("true");
    return false;
}

代码演示

var-val='';
var后缀=[“jpg”、“jpeg”、“png”、“gif”、“tiff”、“bmp”];
var re=new RegExp('http://[^>\\s]+?\。(?:'+后缀.join('124;')+');

控制台日志(重新测试(val))
val
只是html?@KevBot-是的,尽管其中一些是自定义标记。后缀regex://\(jpe?g | png | bmp | tiff | gif)/g<代码>*
有点咄咄逼人,使用url正则表达式代替HM。这听起来像是我想要的,但我必须正确地实现它。我正在用我所做的更新OP;请帮忙!它将我在OP中显示的内容准确打印为我在textarea中键入的文本:所有图像url必须是安全的。这不是图像url:这是
(抱歉,无法确定如何设置注释中多行的格式。)对于您输入的url,返回true。它需要返回false-它包含图像后缀,并且不以https开头。