以下是一个验证带有参数的域名的 JavaScript 正则表达式:
const reg = /^((https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([\/\w \.-]*)*\/?)?(\?[\w\d%&=]*)?$/;
这个正则表达式可以验证带有或不带有协议前缀的域名,例如 http://example.com
或 example.com
。它还可以验证包含路径和参数的 URL,例如 http://example.com/path/to/page.html?param1=value1¶m2=value2
。
以下是每个部分的解释:
^
:匹配字符串的开头(
:开始捕获组(https?:\/\/)?
:匹配可选的http://
或https://
协议前缀([\da-z.-]+)
:匹配域名中的字符,包括数字、小写字母、点和连字符\.([a-z.]{2,6})
:匹配顶级域名(例如.com
、.edu
等)和次级域名(例如.co.uk
)([\/\w \.-]*)*
:匹配可选的路径,包括斜杠、单词字符、空格、点和连字符\/?
:匹配可选的斜杠作为路径的结尾)?
:结束捕获组并使其变成可选的(\?[\w\d%&=]*)?
:匹配可选的查询参数,包括问号和各种字符(例如字母数字和百分号)组成的参数字符串$
:匹配字符串的结尾