如何在开始时检查字符串是否包含http://

时间:2009-09-08 19:46:20

标签: regex string

我希望能够检查一个字符串,看看它是否在开头有http://,如果没有添加它。

if (regex expression){
string = "http://"+string;
}

有谁知道要使用的正则表达式?

9 个答案:

答案 0 :(得分:43)

如果您不需要正则表达式来执行此操作(取决于您使用的语言),您只需查看字符串的初始字符即可。例如:

if (!string.StartsWith("http://"))
    string = "http://" + string;
//or//
if (string.Substring(0, 7) != "http://")
    string = "http://" + string;

答案 1 :(得分:8)

应该是:

/^http:\/\//

请记住将此用于!not(您没有说出哪种编程语言),因为您正在寻找不匹配的项目。

答案 2 :(得分:6)

在JavaScript中:

if(!(/^http:\/\//.test(url)))
{
    string = "http://" + string;
}

答案 3 :(得分:4)

var url = "http://abcd";
var pattern = /^((http|https|ftp):\/\/)/;

if(!pattern.test(url)) {
    url = "http://" + url;
}

alert(url);

答案 4 :(得分:3)

这样的事情应该有效^(https?://)

答案 5 :(得分:2)

yourString = yourString.StartWith("http://") ? yourString : "http://" + yourString

更性感

答案 6 :(得分:1)

 /^http:\/\//

答案 7 :(得分:0)

如果javascript是此处所需的语言,请查看this post,它将“startswith”属性添加到字符串类型。

答案 8 :(得分:0)

对我来说,对于PHP,这是我使用的2个,为了完整性起见,在这里添加它们。

$__regex_url_no_http = "@[-a-zA-Z0-9\@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()\@:%_\+.~#?&//=]*)@";

$__regex_url_http = "@https?:\/\/(www\.)?[-a-zA-Z0-9\@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()\@:%_\+.~#?&//=]*)@";

我有类似的功能可以检查:

/**
 * Filters a url @param url If @param protocol is true
 * then it will check if the url contains the protocol
 * portion in the url if it doesn't then false will be
 * returned.
 * 
 * @param string $url
 * @param boolean $protocol
 * @return boolean
 */   
public function filter_url($url, $protocol=false){
  $response = FALSE;

  $regex = $protocol == false ? $this->__regex_url_no_http:$this->__regex_url_http;

  if(preg_match($regex, $url)){
    $response = TRUE;
  }

  return $response;
}

我没有创建正则表达式。我在某个地方找到了它们,但似乎符合要求