javascript - 如何将 URL 与正则表达式进行匹配?

标签 javascript regex

我们想要检查网址是否与 mail.google.com 或 mail.yahoo.com(也接受它们的子域)匹配,但不检查在问号后包含此字符串的网址。我们还希望字符串“mail.google.com”和“mail.yahoo.com”出现在网址的第三个斜杠之前,例如 https://mail.google.com/ 是已接受,https://www.facebook.com/mail.google.com/ 未接受,且 https://www.facebook.com/?mail=https://mail.google.com/ 也不被接受。 https://mail.google.com.au/ 也不被接受。可以用正则表达式实现吗?

var possibleURLs = /^[^\?]*(mail\.google\.com|mail\.yahoo\.com)\//gi;
var url;
// assign a value to var url.
if (url.match(possibleURLs) !== null) {
    // Do something...
}

目前,这将匹配 https://mail.google.com/https://www.facebook.com/mail.google.com/ ,但我们不想匹配 https://www.facebook.com/mail.google.com/

编辑:我想匹配任何协议(protocol)(任何不包含 "?""/" 的字符串),后跟斜杠 "/" 两次(字符串和斜杠都可以是两次),然后是任何不包含 "?""/"的字符串 (如果不为空,则必须以点 "." 结尾),然后是 (mail\.google\.com|mail\.yahoo\.com)\/。不区分大小写。

最佳答案

一点都不好笑 - 但为什么它必须是正则表达式?

是否有原因导致您无法使用 URL 简化流程? (或 Chrome 和 Safari 中的 webkitURL)- URL constructor只需获取一个字符串,然后包含 URL 各部分的属性。它是否支持你想要支持的所有主机类型,我不知道。

当然,之后您可能仍然需要一个正则表达式(尽管实际上您只是检查主机名是否以 yahoo.com 或 google.com 结尾),但您只需针对 URL 的主机名运行它对象而不是整个 URI。

该 API 并不普遍,但似乎得到了很好的支持,无论如何,如果这是客户端验证,那么我希望您也在服务器上检查它,因为绕过 javascript 验证很容易。

关于javascript - 如何将 URL 与正则表达式进行匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374283/

相关文章:

javascript - setInterval 函数仅工作一次

javascript - 将 PHP 变量传递给 jQuery 时遇到问题

c# - 使用正则表达式删除 css 注释

JavaScript:替换部分文本存储在以 '$"开头的字符串变量中?

php - 如何使用 PHP preg_replace 链接 Twitter 用户名?

javascript - 在下拉菜单中添加 div

c# - 在 ASP.NET 中检测 HTML

javascript - 参数化函数

javascript - 用于匹配包含 ID 的工作表名称并使其可见的 Apps 脚本

Java 正则表达式与括号匹配