我一直在使用以下正则表达式来检查它是否是有效的 facebook url:/^(?:(?:http|https):\/\/)?(?:www.)? facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*)?$/
问题是,这个正则表达式很旧,现在一些 facebook url 的 url 示例中有 .
和 ?fref=ufi
:https://www.facebook.com/user.moreusername?fref=ufi
我怎样才能修复这个正则表达式接受这种url?
我一直在尝试添加 \/?(?:?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
这可能不适用于所有场景,因为我只有您的测试用例可供使用。
关于javascript - Facebook 正则表达式允许 .和 ?fref=ufi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37055470/