| /** | |
| * URL 工具函数 | |
| */ | |
| /** | |
| * 验证 URL 格式 | |
| * @param url 待验证的 URL 字符串 | |
| * @returns 是否为有效的 URL | |
| */ | |
| export function isValidUrl(url: string): boolean { | |
| if (!url || typeof url !== 'string') { | |
| return false; | |
| } | |
| try { | |
| const urlObj = new URL(url.trim()); | |
| return urlObj.protocol === 'http:' || urlObj.protocol === 'https:'; | |
| } catch { | |
| return false; | |
| } | |
| } | |
| /** | |
| * 检测文本中是否包含 URL | |
| * @param text 待检测的文本 | |
| * @returns 找到的第一个 URL,如果没有则返回 null | |
| */ | |
| export function extractUrl(text: string): string | null { | |
| if (!text || typeof text !== 'string') { | |
| return null; | |
| } | |
| // 简单的 URL 正则匹配 | |
| const urlPattern = /https?:\/\/[^\s]+/gi; | |
| const match = text.trim().match(urlPattern); | |
| if (match && match.length > 0) { | |
| const url = match[0].replace(/[.,;:!?]+$/, ''); // 移除末尾的标点符号 | |
| return isValidUrl(url) ? url : null; | |
| } | |
| return null; | |
| } | |
| /** | |
| * 检查文本是否为纯 URL(没有其他内容) | |
| * @param text 待检查的文本 | |
| * @returns 是否为纯 URL | |
| */ | |
| export function isPureUrl(text: string): boolean { | |
| if (!text) { | |
| return false; | |
| } | |
| const trimmed = text.trim(); | |
| return isValidUrl(trimmed) && trimmed.split(/\s+/).length === 1; | |
| } | |