簡體   English   中英

PHP正則表達式模式,用於匹配用戶名

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

感謝您的幫助,對不起我的英語不好。

這應該工作:

(?<=\s|^)@([\w@]+)

在斷言后面有一個肯定的后置斷言,以確保標記之前帶有空格或字符串的開頭。 之后,只需要使用@字符並將用戶名放在捕獲組中即可。

正則表達式演示

您的正則表達式幾乎是正確的。 首先,您想說您的正則表達式也應該匹配字符串的開頭。 您可以使用插入符號(^)來實現:

^@([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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM