我遇到了一个错误,该错误不允许在我们的表单之一中输入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保存在数据库中。
答案 0 :(得分:0)
Regexp::Common::URI::http的-scheme标志采用一个参数,该参数是一个正则表达式,用于匹配允许的方案。它默认为仅匹配http
,而忽略该参数似乎意味着该方案根本不包含在匹配中。因此,要同时匹配http和https,您可以将其传递给https?
的正则表达式:
m/$RE{URI}{HTTP}{-scheme => qr<https?>}{-keep}/