You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复R语言URL验证正则表达式:解决以s开头域名识别失败问题

问题分析与解决方案

问题根源

原正则表达式中的\s在R的双引号字符串中未正确转义:R字符串里的反斜杠需要用双反斜杠\\转义,否则\s会被解析为普通字符s,导致[^\s/$.?#]等价于[^s/$.?#]——这个字符类明确排除了s,所以域名以s开头的URL自然匹配失败。

修改后的验证函数

将正则里的\s替换为\\s,修正后的代码如下:

is_valid_url <- function(string) {
    any(grepl("(https?|ftp)://[^\\s/$.?#].[^\\s]*", string))
}

测试验证

运行修改后的正则测试原问题案例,结果如下:

> any(grepl("(https?|ftp)://[^\\s/$.?#].[^\\s]*", "https://science.org"))
[1] TRUE
> any(grepl("(https?|ftp)://[^\\s/$.?#].[^\\s]*", "https://stackoverflow.com"))
[1] TRUE
> any(grepl("(https?|ftp)://[^\\s/$.?#].[^\\s]*", "http://example.com"))
[1] TRUE
> any(grepl("(https?|ftp)://[^\\s/$.?#].[^\\s]*", "www.example.com"))
[1] FALSE
> any(grepl("(https?|ftp)://[^\\s/$.?#].[^\\s]*", "123"))
[1] FALSE

所有案例均符合预期,域名以s开头的URL现在能正确返回TRUE。

内容的提问来源于stack exchange,提问作者klidvdo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:50:29