[英]PHP regex pattern for matching username
我正在开发一个laravel应用程序,用户可以在其中通过将用户名输入适当的形式来引用其个人资料。
让我们来看一个例子:
名为John的用户可以使用以下文本引用其个人资料:@John
我花了几个小时试图了解正则表达式的工作原理,但是到目前为止,这种模式是我现在所要做的: @([A-Za-z0-9]+)
此模式与上面的示例完全匹配,但也与通常不应该使用的其他格式匹配。
我需要一些帮助来创建完美的图案。
它只能匹配以@符号开头的字符串。 例如:@ John,@ Sam,@ Bill等。
它不应与不以@符号开头的字符串匹配。 例如:a @ John,something @ Sam,123 @ Bill等。
它还应与包含多个@符号的那些格式匹配。 例如:@John @,@ Sam @ something,@ Bill @@ sometext等。在这种情况下,模式应捕获:John @,Sam @ something,Bill @@ sometext
感谢您的帮助,对不起我的英语不好。
您的正则表达式几乎是正确的。 首先,您想说您的正则表达式也应该匹配字符串的开头。 您可以使用插入符号(^)来实现:
^@([A-Za-z0-9]+)
其次,您希望能够将@符号放入其中。 现在很容易-只需在括号内添加该符号即可。
^@([A-Za-z0-9@]+)
尝试/(?:\\s@{1,3})([a-zA-Z@.]+)/i
说明
@角色。 匹配一个“ @”字符(字符代码64)。 {1,3}量词。 在前一个令牌的1和3之间匹配。
\\ w字。 匹配任何单词字符(字母数字和下划线)。 +加号。 匹配1个或多个前面的令牌。
这是regexr: http: //regexr.com/3djhq
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.