Андрей Asked:2020-04-24 02:05:36 +0000 UTC2020-04-24 02:05:36 +0000 UTC 2020-04-24 02:05:36 +0000 UTC 站点地址处理 772 晚上好。有一个条件: Проверка должна срабатывать при любом формате ввода адреса: site.com www.site.com http://site.com https://site.com 告诉我如何实现对字段中地址的正确处理,使脚本正常工作?我假设在模式的帮助下? php 1 个回答 Voted Best Answer vp_arth 2020-04-24T02:12:25Z2020-04-24T02:12:25Z 可能 html5 input[type=url] 会适合你 <input type="url" /> RFC3986 为 URI 定义了以下模式:^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 您可以使用自己的模式优化输入字段(您不想要任何ftp://...?) 例如: <input type="url" pattern="https?://.+"/> 或者更复杂的: <input type="url" pattern="^(?:https?://)?(?:www\.)?(?:[^\/\.]+\.)+[^\/\.]+"/> 常规测试: const reg = /^(?:https?:\/\/)?(?:www\.)?(?:[^\/\.]+\.)+[^\/\.]+/; const samples = [ 'http://www.example.com', 'https://example.com', 'www.example.com', 'example.com', ]; console.log(samples.map(sample => reg.test(sample))); document.querySelector('button').addEventListener('click', () => { console.log(document.querySelector('input').validity.valid) }); <input type="url" pattern="^(?:https?://)?(?:www\.)?(?:[^\/\.]+\.)+[^\/\.]+"/> <!-- Регулярка изменена, иначе --> <button>Check</button> 使用了 enSO 的答案
可能 html5 input[type=url] 会适合你
RFC3986 为 URI 定义了以下模式:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
您可以使用自己的模式优化输入字段(您不想要任何
ftp://...
?)例如:
或者更复杂的:
常规测试:
使用了 enSO 的答案