帮我用js写一个匹配完整域名的正则表达式的函数
时间: 2024-05-14 14:12:21 浏览: 18
以下是一个匹配完整域名的正则表达式的JavaScript函数:
```javascript
function validateDomainName(domainName) {
var re = /^(?:https?:\/\/)?(?:[a-z0-9]+\.)*([a-z0-9]+\.[a-z]{2,})(?:\/.*)?$/i;
return re.test(domainName);
}
```
这个函数接收一个字符串参数 `domainName`,并返回一个布尔值,表示该字符串是否匹配完整的域名。
该正则表达式包括以下几个部分:
- `^(?:https?:\/\/)?`: 可选的协议前缀,可以包括 `http://` 或 `https://`
- `(?:[a-z0-9]+\.)*`: 可选的子域名部分,可以包括一个或多个由字母和数字组成的子域名,每个子域名后面跟一个点号
- `([a-z0-9]+\.[a-z]{2,})`: 域名部分,必须包括一个或多个由字母和数字组成的字符,跟一个点号,然后跟两个或更多的字母
- `(?:\/.*)?$`: 可选的路径部分,可以包括一个或多个字符,以斜杠开头,直到字符串的结尾
这个正则表达式可以匹配以下字符串:
- `example.com`
- `www.example.com`
- `https://example.com`
- `https://www.example.com`
- `example.com/path/to/file.html`
- `https://example.com/path/to/file.html`
但是它无法匹配以下字符串:
- `example`
- `example.c`
- `example..com`
- `example.com:8080`