我正在使用这个正则表达式来检测用户在输入域名时是否包含了协议——我不希望他们这样做:
if (/^[^http:\/\/|www.][a-zA-Z0-9\-]+\.(co\.uk|com|net|biz|org|org\.uk|eu|me\.uk)$/i.test(inp2){
... ok ...
}
它在 97% 的时间内都在工作,然后我意识到为什么有些名称失败了 - 它不匹配整个协议,它匹配任何具有字符 h、t、t、p 或 w、w、w 的东西,而不是将它们视为整个单词' http//:' 或 'www.'
我在测试时发现:
**hattooflat.com**
应该通过但字符 h,t,t 使其失败
我想我需要单词边界 \b 但我不确定在哪里:
(/^\b[^http:\/\/|www.]\b[a-zA-Z0-9\-]+\.( .....
或者
(/^[^\bhttp:\b\/\/|\bwww\b.][a-zA-Z0-9\-]+\.( .....
我知道我很接近 - 经过 4 年的开发,正则表达式仍然让我感到悲伤