验证特定网址

Validate specific url

本文关键字:验证      更新时间:2023-09-26

我正在为我的朋友制作一个表格,要求所有访问者填写一个特定的域名。我想要的是,他们必须编写一个以 https://specificname.com 开头的链接,然后以 ID 继续。 示例 https://specificname.com/id/WordOrNumber .我需要像正则表达式或验证器这样的东西来验证他们在表单中填写的链接。

这是我现在使用的字符串。

case 'url':
    if ('http://' === $value) $value = '';
    if ($value && !preg_match('/^(https?|s?ftp):'/'/(((([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(%['da-f]{2})|[!'$&'''(')'*'+,;=]|:)*@)?((('d|[1-9]'d|1'd'd|2[0-4]'d|25[0-5])'.('d|[1-9]'d|1'd'd|2[0-4]'d|25[0-5])'.('d|[1-9]'d|1'd'd|2[0-4]'d|25[0-5])'.('d|[1-9]'d|1'd'd|2[0-4]'d|25[0-5]))|((([a-z]|'d|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(([a-z]|'d|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])*([a-z]|'d|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])))'.)+(([a-z]|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(([a-z]|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])*([a-z]|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])))'.?)(:'d*)?)('/((([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(%['da-f]{2})|[!'$&'''(')'*'+,;=]|:|@)+('/(([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(%['da-f]{2})|[!'$&'''(')'*'+,;=]|:|@)*)*)?)?('?((([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(%['da-f]{2})|[!'$&'''(')'*'+,;=]|:|@)|['x{E000}-'x{F8FF}]|'/|'?)*)?(#((([a-z]|'d|-|'.|_|~|['x{00A0}-'x{D7FF}'x{F900}-'x{FDCF}'x{FDF0}-'x{FFEF}])|(%['da-f]{2})|[!'$&'''(')'*'+,;=]|:|@)|'/|'?)*)?$/iu', $value))
        return frmd_error('Please enter a valid URL.', $elm['name']);
    break;

此代码运行良好,但它将接受访问者填写的所有类型的域名。请只回复正则表达式或验证器,因为我不知道要编辑什么.

我不擅长编码。

如果要确保输入的 URL 与特定前缀匹配,则可以跳过正则表达式,只测试子字符串,例如:

var validPrefix = 'https://example.com';
if (enteredUrl.substring(0, validPrefix.length) != validPrefix){
    alert('Invalid URL.');
}

如果你想允许URL上的微小变化,例如有/没有WWW或http和https,那么你可以使用一个简单的正则表达式,将它们定义为可选部分。

var urlRegex = /https?:'/'/(www.)?example.com/;
if (!urlRegex.test(enteredUrl)){
    alert('Invalid URL.');
}

如果您需要验证整个 URL 格式而不仅仅是前缀,则需要根据您需要匹配的任何格式条件来扩展正则表达式。 一些正则表达式教程应该可以帮助您确定如何匹配所需的内容。 例如,要在域后添加 ID 号,您可以执行以下操作:

var urlRegex = /https?:'/'/(www.)?example.com'/'d+/;
if (!urlRegex.test(enteredUrl)){
    alert('Invalid URL.');
}

如果您前缀并且输入 url 是

var validPrefix = "validDomain.com";
var inputURL = "www.validDomain.com/context1";

那么你需要做的就是

if ( inputURL.indexOf( validPrefix ) == -1 )
{
   alert( "No, input URL doesn't contain valid domain prefix" );
}
else
{
   alert( "Yes, input URL contains valid domain prefix" );
}