Regexp ::通用qw / URI /不允许HTTPS

时间:2019-05-22 19:53:49

标签: perl module

我遇到了一个错误,该错误不允许在我们的表单之一中输入https。搜索表格后,我注意到我们正在使用Regexp :: Common qw / URI /

我尝试过

if ($params{URL} =~ /$RE{URI}{HTTP}{-keep}{-scheme}/)
{
$form{URL} = $1;
}
else
{
$error .= '<li>Website Address is invalid. The URL must be in this form: <b>http://example.com</b></li>';
}

并且允许http和https,但仅将://www.google.com保存到数据库中

if ($params{URL} =~ /$RE{URI}{HTTP}{-keep}/)
{
$form{URL} = $1;
}
else
{
$error .= '<li>Website Address is invalid. The URL must be in this form: <b>http://example.com</b></li>';
}

仅允许使用http,但将整个url保存到数据库中

if ($params{URL} =~ /$RE{URI}{HTTP}{-scheme}/)
{
$form{URL} = $1;
}
else
{
$error .= '<li>Website Address is invalid. The URL must be in this form: <b>http://example.com</b></li>';
}

允许http和https,但不保存任何内容到数据库

我想使https和http有效,并将完整的url保存在数据库中。

1 个答案:

答案 0 :(得分:0)

Regexp::Common::URI::http的-scheme标志采用一个参数,该参数是一个正则表达式,用于匹配允许的方案。它默认为仅匹配http,而忽略该参数似乎意味着该方案根本不包含在匹配中。因此,要同时匹配http和https,您可以将其传递给https?的正则表达式:

m/$RE{URI}{HTTP}{-scheme => qr<https?>}{-keep}/