kotlin 正则校验url格式 代码
时间: 2023-09-28 13:12:10 浏览: 171
Kotlin利用Regex如何构建正则表达式详解
以下是使用正则表达式校验URL格式的Kotlin示例代码:
```kotlin
fun isValidUrl(url: String): Boolean {
val regex = Regex(
"""^https?:// # http:// 或 https:// 开头
(?:(?:[A-Z0-9_](?:[A-Z0-9_-]{0,61}[A-Z0-9_])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)| # 域名部分
localhost| # 或者是本地地址
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) # 或者是IP地址
(?::\d+)? # 端口号(可选)
(?:/?|[/?]\S+)$""", RegexOption.IGNORE_CASE or RegexOption.COMMENTS
)
return regex.matches(url)
}
// 测试示例
println(isValidUrl("http://www.example.com")) // true
println(isValidUrl("https://example.com/path/to/page.html")) // true
println(isValidUrl("ftp://example.com/path/to/file.txt")) // false
println(isValidUrl("http://localhost:8080")) // true
println(isValidUrl("http://127.0.0.1")) // true
```
该函数使用了一个较为复杂的正则表达式,可以较为准确地校验URL的格式。其中,该正则表达式包含以下几个部分:
1. `^https?://`:以 `http://` 或 `https://` 开头。
2. `(?:...|...)`:表示两个或多个可选的匹配项。
3. `[A-Z0-9_](?:[A-Z0-9_-]{0,61}[A-Z0-9_])?\.`:匹配域名中的一级和多级子域名,例如 `www.`、`blog.` 等。
4. `(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)`:匹配顶级域名,例如 `.com`、`.co.uk` 等。
5. `localhost`:匹配本地地址。
6. `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}`:匹配IP地址。
7. `(?::\d+)?`:匹配可选的端口号。
8. `(?:/?|[/?]\S+)$`:匹配可选的路径和查询参数。
如果URL符合以上规则,则返回 `true`,否则返回 `false`。
阅读全文