我有一个正则表达式模式,它可以很好地与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$/;
在模式的最后,你会看到单个字符异常,但它不喜欢它。
2条答案
按热度按时间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$/;
j91ykkif2#
我推荐一个更简单、更具体的模式,也使用了RegExp object(改编自this answer):
尝试RegExr验证它。
一般来说,我认为RegEx不是验证URL的理想解决方案。考虑一下你是否有其他选择。