如何使用正则表达式验证网站网址。
Url是这样的:
google.com
www.google.com
这里我们只想支持上面的链接。 如果我们输入像 www:// abc 这样的垃圾数据,那么 abcdefg 是不允许的。
我在 Drupal :
中尝试过这样的操作这是drupal自定义代码:
$form['web_url'] = array(
'#title' => 'Web URL :',
'#type' => 'textfield',
'#size' => 100,
'#default_value' => @$sourcepath,
'#required' => TRUE,
'#maxlength' => 100,
'#attributes' => array('class' => array('myclass_edit')),
);
function edit_files_form_validation($form, &$form_state){
$website_url = $form_state['values']['web_url'];
drupal_set_message("hi");
drupal_set_message($website_url);
if(!preg_match("/^(http[s]?)\:\/\/([aZ09-_]*?\.)?([aZ09-_]{2,}\.)([\w\.]{2,5})$" ,$website_url )){
form_set_error('web_url',t('Please use only an valid URL links'));
}
}
但不符合我的要求。
答案 0 :(得分:1)
你可以试试这个正则表达式
/^((ht|f)tp(s?)\:\/\/|~/|/)?([w]{2}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/
http://www.google.com ,
https://www.google.com,
ftp://www.google.com,
www.google.com
功能 - >
function valid_url($value)
{
$pattern = "/^((ht|f)tp(s?)\:\/\/|~/|/)?([w]{2}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?/";
if (!preg_match($pattern, $value))
{
return FALSE;
}
return TRUE;
}
答案 1 :(得分:0)
^(?:(?:http|https):\/\/)?(?:[\w-]+\.)+[\w]+(?:\/[\w- .\/?]*)?$
你可以试试这个。
$re = "/^(?:(?:http|https):\\/\\/)?(?:[\\w-]+\\.)+[\\w]+(?:\\/[\\w- .\\/?]*)?$/m";
$str = "http://google.com\nhttps://google.com";
preg_match_all($re, $str, $matches);
答案 2 :(得分:0)
你可以使用这个正则表达式
<强> / ^(HTTP | HTTPS):// [A-ZA-Z0-9-] + [A-Z] {2,4} / 强>
答案 3 :(得分:0)
这是我的解决方案:
^(http[s]?)\:\/\/([aZ09-_]*?\.)?([aZ09-_]{2,}\.)([\w\.]{2,5})$
获取协议,子域(如果存在),域(必需)和分机(必需)。
<强>规则:强>
http或https required
域必须包含少于2个字符
Ext必须包含少于2个字符和5个字符的限制
<强>示例:强>
http://tonton.google.fr
1. [0-4] `http`
2. [7-14] `tonton.`
3. [14-21] `google.`
4. [21-23] `fr`
http://www.google.co.uk
1. [46-50] `http`
2. [53-57] `www.`
3. [57-64] `google.`
4. [64-69] `co.uk`
https://paulrad.com
1. [70-75] `https`
3. [78-86] `paulrad.`
4. [86-89] `com`
<强>演示:强> https://regex101.com/r/pV1hX8/2