Location: templates/add_area.html:435-453
Problems:
{name:"contact:email",index:/@/} matches ANY @ symbol (will match "twitter.com/@username")
{name:"contact:website",index:/https[://]/} is malformed - matches "https" OR ":" OR "/"
- Phone regex is complex and untested
Fix: Use more specific patterns:
const contactTagsInfo = [
{name:"contact:email", index: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/},
{name:"contact:discord", index: /discord\.gg|discord\.com/i},
{name:"contact:twitter", index: /(?:x\.com|twitter\.com)\/[\w]+/i},
{name:"contact:telegram", index: /t\.me\/[\w]+/i},
{name:"contact:signal", index: /signal\.group\//i},
{name:"contact:whatsapp", index: /chat\.whatsapp\.com\//i},
{name:"contact:facebook", index: /facebook\.com\/[\w.]+/i},
{name:"contact:instagram", index: /instagram\.com\/[\w._]+/i},
{name:"contact:youtube", index: /(?:youtu\.be|youtube\.com)\//i},
{name:"contact:github", index: /github\.com\/[\w-]+/i},
{name:"contact:linkedin", index: /linkedin\.com\//i},
{name:"contact:matrix", index: /@[\w._-]+:[\w.-]+/}, // Matrix ID format
{name:"contact:meetup", index: /meetup\.com\//i},
{name:"contact:nostr", index: /^npub1[a-z0-9]{58}$/},
{name:"contact:geyser", index: /geyser\.fund\//i},
{name:"contact:rss", index: /\/(?:feed|rss)/i},
{name:"contact:phone", index: /^\+?[\d\s\-()]+$/},
{name:"contact:website", index: /^https?:\/\//i} // Must be last
]
Location:
templates/add_area.html:435-453Problems:
{name:"contact:email",index:/@/}matches ANY @ symbol (will match "twitter.com/@username"){name:"contact:website",index:/https[://]/}is malformed - matches "https" OR ":" OR "/"Fix: Use more specific patterns: