Instagram用户名Regex -PHP

6ojccjat  于 2023-01-27  发布在  PHP
关注(0)|答案(8)|浏览(154)

我有注册表和输入"instagram用户名"。
Instagram用户名只能包括:a-z A-Z 0-9 dot(.) underline(_)
这是我的代码:

if(!empty($instaUsername) && preg_match("/([A-Za-z._])\w+/", $instaUsername)) {
            throw new Exception ("Your name Instagram is incorrect");
}

$instaUsername = "name.123""name_123"时,这会给我错误。
如何按照以下要求制作正则表达式?
a-z A-Z 0-9 dot(.) underline(_)
我很乐意有良好的教程regex作为评论。

atmip9wb

atmip9wb1#

jstassen对insta用户名有很好的评价:

(?:^|[^\w])(?:@)([A-Za-z0-9_](?:(?:[A-Za-z0-9_]|(?:\.(?!\.))){0,28}(?:[A-Za-z0-9_]))?)
fgw7neuy

fgw7neuy2#

所以你想要一个正则表达式来验证Instagram的用户名吗?那么,我们应该先研究一下实际的需求是什么吗?好的,让我们开始吧!
...
看起来Instagram并没有明确说明有效用户名的要求。所以我注册了一个账号,检查了它接受哪些用户名,拒绝哪些用户名,以了解这些要求。我发现的要求如下:

  • 长度必须介于3到30个字符之间。
  • 被接受的角色就像你说的:a-z A-Z 0-9 dot(.) underline(_).
  • 一行中不允许有两个或两个以上的连续点。
  • 不允许以点开始或结束用户名。

将所有这些放在一起将得到以下正则表达式:

^[\w](?!.*?\.{2})[\w.]{1,28}[\w]$

Try it out here with examples!

stszievb

stszievb3#

从评论部分继续前进,这就是你想要的:

if(!empty($instaUsername) && preg_match('/^[a-zA-Z0-9._]+$/', $instaUsername)) {
            throw new Exception ("Your name Instagram is incorrect");
}
vwhgwdsa

vwhgwdsa4#

这个正则表达式应该适合你:

~^([a-z0-9._])+$~i

可以使用anchors来匹配输入的开始(^)和结束$,并且使用modifieri来区分大小写。

6g8kf2rb

6g8kf2rb5#

我发现这里的很多答案都太复杂了,而且没有考虑到用户名在句子中的使用(比如hey @man... what's up?),所以我自己做了一个

/@(?:[\w][\.]{0,1})*[\w]/

上面写着:

  1. @:查找@符号(可选)
  2. ([\w][\.]{0,1})+:查找一个单词字符(A-Z、0-9、_),一行中最多1个点,*,次数可任意选择(例如,允许@u.s.e.r.n.a.m.e,但不允许@u..sername
  3. (?:在上面之前的this仅表示“实际上不为此创建捕获组”
  4. [\w]以单词字符结尾(即不允许最后使用点,如@username.应排除点)
    如果你想像IG一样把用户名限制在30个字符以内,那么:
@(?:(?:[\w][\.]{0,1})*[\w]){1,29}

这只是将所有内容 Package 在另一个非捕获(?:组中,并将总长度限制为29个字符

guykilcj

guykilcj6#

好吧,所以我的编辑被拒绝了,因为我应该把它作为一个答案或评论发布,所以

if(!empty($instaUsername) && !preg_match("/([A-Za-z._])\w+/", $instaUsername)) {
        throw new Exception ("Your name Instagram is incorrect");
 }
kfgdxczn

kfgdxczn7#

我使用此模式

if(empty($instaUsername) or preg_match("/[a-z|A-Z|0-9|\.|\_]+$/", $instaUsername)==false) {
            throw new Exception ("Your name Instagram is incorrect");
}
zz2j4svz

zz2j4svz8#

有效寄存器regex

(?!.*\.\.)(?!.*\.$)[^\W][\w.]{0,29}$

相关问题