如何检查用户链接到具有两个域名的帐户?



如何使用两个域名验证用户配置文件 URL。例如,有些站点可从某些域获得。同一站点打开,其中包含许多域名。例如,我也可以和 https://wb.com 一起去 https://website.com。在这种情况下,用户配置文件的 URL 可以包含两个域:

  • https://website.com/username
  • https://wb.com/username

我可以使用两种不同的模式单独检查这些域:

适合:https://website.com/username

(?:(?:http|https)://)?(?:www.)?website.com/(?:(?:w)*#!/)?([w-]*)?

适合:https://wb.com/username

(?:(?:http|https)://)?(?:www.)?wb.com/(?:(?:w)*#!/)?([w-]*)?

如何创建单个模板来检查指向用户配置文件的链接?

使用交替来匹配websitewb,并重构正则表达式以删除不必要的组等,您可以使用:

(?:https?://)?(?:www.)?(?:wb|website).com/(?:w*#!/)?([w-]*)?

请注意,由于.匹配任何字符,因此您需要在前面使用对其进行转义。

https://regex101.com/r/BCbmEw/1

分离出来:

(?:https?://)?
(?:www.)?
(?:wb|website).com/
(?:w*#!/)?
([w-]*)?

如果要包含任何用户名,您的正则表达式可能必须是编程的(我在这里使用 Bash 检查我的工作,所以,为了名字的缘故,我会选择{username}这是我想要的人所需的用户名。我还要安全地假设您想要的所有 URL 都是这种格式。

我测试站点的方法也是使用名为sites.txt的文本文件,我测试正则表达式的方法是运行cat sites.txt | grep '{expression}'

我的表达是,再次{username}是我们想要的用户名:

.*/{username}$

例如,对于用户名username,我的表达式将是:

.*/username$

或者,对于您的名字 Andreas Hunter,您的名称可能是ahunter1,结果表达式将是:

.*/ahunter1$

我提到程序化正则表达式的原因是; 假设您正在程序中执行此操作,并且您的语言有一个方法/插件/库或其他东西来检查数组中的每个项目或文件中的每一行,并且在完全匹配时,它返回true,否则false

如果你在 Java 中执行此操作,并且你的方法在字符串str上运行,并且该方法是一种称为isRegexMatch(String)String方法,并且您正在检查的用户名是另一个称为usernameString,您的方法调用将如下所示:

str.isRegexMatch(".*\/" + username + "$");

最新更新