[英]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.