regex X(以前的Twitter)的链接验证模式?

noj0wjuj  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(96)

我有一个正则表达式模式,它可以很好地与twitter.com(或任何其他URL)一起工作,但是因为它现在是“X”,当一个链接被复制和粘贴时,它x.com在复制的链接中有www.example.com,然后它在我的正则表达式中就不起作用了。这是怎么回事?

const linkPattern = /^(http(s)?:\/\/)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$|^x$/;

在模式的最后,你会看到单个字符异常,但它不喜欢它。

qaxu7uf2

qaxu7uf21#

x.com是一个字母,所以尝试识别一个字母的长度而不是>2({1,256}而不是{2,256})
const linkPattern = /^(http(s)?://)[-a-zA-Z0-9@:%.+~#=]{1,256}.[a-z]{2,6}\B([-a-zA-Z0-9@:%+.~#?&//=]*)$|^x$/;

j91ykkif

j91ykkif2#

我推荐一个更简单、更具体的模式,也使用了RegExp object(改编自this answer):

const linkRegExp = new RegExp('^(?:https?:\/\/)?(?:www\\.)?x\\.com\/(\\w+)$', 'i')

尝试RegExr验证它。
一般来说,我认为RegEx不是验证URL的理想解决方案。考虑一下你是否有其他选择。

相关问题