用于检查网站URL的正则表达式

Lin*_*vis 11 php regex

我需要使用正则表达式检查网址.

如果用户输入url为

  1. www.test.com
  2. http://www.test.com
  3. https://www.test.com

我有一个正则表达式

/^(http\:\/\/[a-zA-Z0-9_\-]+(?:\.[a-zA-Z0-9_\-]+)*\.[a-zA-Z]{2,4}(?:\/[a-zA-Z0-9_]+)*(?:\/[a-zA-Z0-9_]+\.[a-zA-Z]{2,4}(?:\?[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)?)?(?:\&[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)*)$/
Run Code Online (Sandbox Code Playgroud)

但它只允许第二种选择.我怎样才能修改正则表达式,以便它也应该接受第一个和第三个选项

Sal*_*n A 22

这是测试域名的一个非常基本的表达式:

@^(http\:\/\/|https\:\/\/)?([a-z0-9][a-z0-9\-]*\.)+[a-z0-9][a-z0-9\-]*$@i
Run Code Online (Sandbox Code Playgroud)

应该匹配:

domain.com
www.domain.com
http://domain.com
https://domain.com
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此答案与大写字母不匹配. (4认同)
  • 几分钟前,我在模式的末尾添加了小"i".那应该解决它. (3认同)
  • 对于.Net,它是 (?i:(http\:\/\/|https\:\/\/)?([a-z0-9][a-z0-9\-]*\.)+ [a-z0-9][a-z0-9\-]*$) (2认同)