如何使用两个域名验证用户个人资料URL。例如,有些站点可从某些域访问。同一站点将打开许多域名。例如,我也可以使用https://website.com访问https://wb.com。在这种情况下,用户个人资料的URL可以有两个域:
我可以使用两种不同的模式分别检查这些域:
针对: https://website.com/username
(?:(?:http|https):\/\/)?(?:www.)?website.com\/(?:(?:\w)*#!\/)?([\w\-]*)?
(?:(?:http|https):\/\/)?(?:www.)?wb.com\/(?:(?:\w)*#!\/)?([\w\-]*)?
如何创建一个模板来检查指向用户个人资料的链接?
答案 0 :(得分:2)
使用交替匹配website
或wb
,并重构正则表达式以删除不必要的组,您可以使用:
(?: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