从URL获取instagram用户名-使用正则表达式忽略句点

时间:2018-08-08 10:19:03

标签: php regex

我已经能够使用regex从instagram个人资料URL中检索用户名,但是一旦达到句号,它便会停止

  

完整网址: https://www.instagram.com/username.test.uk/

我的正则表达式的输出: https://www.instagram.com/username

我的正则表达式和输出:

// Regex for verifying an instagram URL
$regex = '/(?:(?:http|https):\/\/)?(?:www.)?(?:instagram.com|instagr.am)\/([A-Za-z0-9-_]+)/im';

// Verify valid Instagram URL
if ( preg_match( $regex, $instagram_url, $matches ) ) {

    $instagram_username = $matches[1];

    var_dump($instagram_username);

var dump产生:用户名

需要对我的正则表达式进行任何明显的更改以排除。在用户名部分?

2 个答案:

答案 0 :(得分:3)

所以它停止了,因为您对用户名的匹配不包括.

/(?:(?:http|https):\/\/)?(?:www.)?(?:instagram.com|instagr.am)\/([A-Za-z0-9-_]+)/im

这可能应该在\.中包括([A-Za-z0-9-_]+)

/(?:(?:http|https):\/\/)?(?:www.)?(?:instagram.com|instagr.am)\/([A-Za-z0-9-_\.]+)/im

这将捕获所有字母数字,下划线和点。

答案 1 :(得分:0)

对于由应用程序“名称标签选项”生成的链接

https?:\/\/www\.?instagram\.com\/([A-Za-z0-9_](?:(?:[A-Za-z0-9_]|(?:\.(?!\.))){0,28}(?:[A-Za-z0-9_]))?\S)\?r=nametag