如何使用两个域名验证用户配置文件URL。例如,有些站点可以从某些域获得。同一个站点会打开多个域名。例如,我也可以使用https://website.com访问https://wb.com。在这种情况下,URL的用户配置文件可以有两个域:
我可以用两种不同的模式单独检查这些域:
For: https://website.com/username
(?:(?:http|https):\/\/)?(?:www.)?website.com\/(?:(?:\w)*#!\/)?([\w\-]*)?(?:(?:http|https):\/\/)?(?:www.)?wb.com\/(?:(?:\w)*#!\/)?([\w\-]*)?如何创建单个模板来检查指向用户配置文件的链接?
发布于 2018-10-23 06:06:48
使用替换来匹配website或wb,以及重构regex以删除不必要的组等等,您可以使用:
(?:https?:\/\/)?(?:www\.)?(?:wb|website)\.com\/(?:\w*#!\/)?([\w-]*)?注意,因为.匹配任何字符,所以需要在前面使用\转义。
https://regex101.com/r/BCbmEw/1
分开的:
(?:https?:\/\/)?
(?:www\.)?
(?:wb|website)\.com\/
(?:\w*#!\/)?
([\w-]*)?发布于 2018-10-23 06:04:21
如果要包含任何用户名,您的regex可能必须是编程的(我在这里使用Bash来检查我的工作,因此,为了名称起见,我将使用{username},这是我想要的人的所需用户名。我还将安全地假设您想要的所有URL都是这种格式的。
我测试站点的方法也是使用一个名为sites.txt的文本文件,我测试regex的方法是运行cat sites.txt | grep '{expression}'。
我的表达式是,同样,{username}是我们想要的用户名:
.*\/{username}$例如,对于用户名username,我的表达式是:
.*\/username$或者,对于您的名字Andreas,您的名字可能是ahunter1,其结果是:
.*\/ahunter1$我提到编程正则表达式的原因是:假设您是在程序中执行此操作,而您的语言有一个方法/插件/库,或者检查数组或文件中每一行中每一项的方法/插件/库,并且在完全匹配的情况下,它返回true,否则返回false。
如果您在Java中这样做,并且您的方法运行在字符串str上,并且该方法是一个名为isRegexMatch(String)的String方法,并且您正在检查的用户名是另一个名为username的String,那么您的方法调用将类似于:
str.isRegexMatch(".*\\/" + username + "$");https://stackoverflow.com/questions/52941955
复制相似问题