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

时间:2018-10-23 05:50:54

标签: regex

如何使用两个域名验证用户个人资料URL。例如,有些站点可从某些域访问。同一站点将打开许多域名。例如,我也可以使用https://website.com访问https://wb.com。在这种情况下,用户个人资料的URL可以有两个域:

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

针对: https://website.com/username

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

针对: https://wb.com/username

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

如何创建一个模板来检查指向用户个人资料的链接?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

分离出来:

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

答案 1 :(得分:0)

如果要包含任何用户名,则您的正则表达式可能必须是编程的(我正在使用Bash在此处检查我的工作,因此,出于名称的考虑,我将使用{username},我想要的人的用户名。我还将安全地假设您想要的所有URL都采用这种格式。

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

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

.*\/{username}$

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

.*\/username$

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

.*\/ahunter1$

我之所以提到程序化正则表达式是;表示您是在程序中执行此操作,并且您的语言具有方法/插件/库或某种可检查数组中每个项目或文件中每一行的内容,并且在完全匹配的情况下会返回true ,否则为false

如果您使用Java进行此操作,并且您的方法在字符串str上运行,并且该方法是名为String的{​​{1}}方法,并且您的用户名是正在检查的是另一个名为isRegexMatch(String)的{​​{1}},您的方法调用如下:

String