我一直在使用以下正则表达式来检查它是否是有效的Facebook网址:/^(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*)?$/
问题是,此正则表达式很旧,现在某些url网址中有一个.
和?fref=ufi
网址示例:https://www.facebook.com/user.moreusername?fref=ufi
我该如何修复,以便该正则表达式接受这种网址?
我一直在尝试添加\/?(?:?fref=ufi.)?\/
,但没有任何运气。
最佳答案
仅从您提供的内容来看,我发现它可以正常工作:
^(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-\.]*)?(?:\?fref=ufi)?$
区别在于:
([\w\-\.]*)? // added the \. for matching the . literally
(?:\?fref=ufi)?$ // this was appended to the end
Regex101
这可能不适用于所有情况,因为我只能处理您的测试用例。