求可提取URL主机名的JavaScript正则及函数实现方案
需求说明
需要编写一个JavaScript函数,实现以下功能:
- 识别符合
https://xxx.example.xx/sp格式的URL,移除https://前缀和末尾的/sp路径,仅保留主机名 - 对于不符合该格式的内容(如
nonurl.example.com),不做任何修改,保持原内容不变
示例转换效果:
https://comanage.example.edu/sp -> comanage.example.edu https://wiki.cs.example.org/sp -> wiki.cs.example.org https://intranet.math.example.edu/sp -> intranet.math.example.edu https://myapp.example.com/sp -> myapp.example.com
解决方案
以下是实现该功能的JavaScript代码,附带详细说明:
完整函数代码
function extractHostname(str) { // 匹配目标格式URL,捕获主机名部分 const regex = /^https:\/\/([a-zA-Z0-9.-]+)\/sp$/; const matchResult = str.match(regex); // 匹配成功则返回捕获的主机名,否则返回原字符串 return matchResult ? matchResult[1] : str; }
正则表达式拆解说明
^https:\/\/([a-zA-Z0-9.-]+)\/sp$ 各部分作用:
^:锁定字符串开头,确保内容是以https://起始https:\/\/:匹配字面量https://,正则里斜杠需要用\转义([a-zA-Z0-9.-]+):捕获组,专门匹配主机名,允许的字符包括大小写字母、数字、点号和短横线,+表示至少包含一个有效字符\/sp$:匹配末尾的/sp,$锁定字符串结尾,确保内容是以/sp结束
使用示例
// 测试目标格式URL console.log(extractHostname("https://comanage.example.edu/sp")); // 输出: comanage.example.edu console.log(extractHostname("https://wiki.cs.example.org/sp")); // 输出: wiki.cs.example.org // 测试非目标格式内容 console.log(extractHostname("nonurl.example.com")); // 输出: nonurl.example.com console.log(extractHostname("https://example.com/otherpath")); // 输出: https://example.com/otherpath console.log(extractHostname("http://comanage.example.edu/sp")); // 输出: http://comanage.example.edu/sp
内容的提问来源于stack exchange,提问作者Karan Nayyar
相关产品推荐
相关产品推荐

