我必須檢查用戶輸入以確保名稱,姓氏(等等)輸入正確且有效。我要建立一個檢查,如果用戶輸入重複字母的第一個名字一個正則表達式,姓氏等..在PHP中捕獲重複字母 - 正則表達式
例子:
- AAAron =壞,因爲3 A的
- 亞倫=好
- 漢娜=因爲3 N的
好
編輯: 這應該允許數字以及大衛3或III
感謝
我必須檢查用戶輸入以確保名稱,姓氏(等等)輸入正確且有效。我要建立一個檢查,如果用戶輸入重複字母的第一個名字一個正則表達式,姓氏等..在PHP中捕獲重複字母 - 正則表達式
例子:
好
編輯: 這應該允許數字以及大衛3或III
感謝
您可以使用反向引用的那個目的。
preg_match('/(\w)(\1+)/', $subject, $matches);
print_r($matches);
的\1
裝置重複第一捕獲,從而在這種情況下\w
。
就你的例子而言,我不認爲使用正則表達式是最好的解決方案,爲什麼不計算任何字符的實例數呢?
即
$charCountArray = array();
foreach ($name as $char) {
$charCountArray[$char]++;
}
回參考是一種先進的功能,幸運的是PCRE功能支持它。
注:preg_match
將匹配只有一個序列,如果你需要知道的所有比賽,請使用preg_match_all
非常好謝謝 – Tech4Wilco
試試這個正則表達式:
/(\w)\1{2}/
你是誰,來驗證拼寫某人的名字? :) –
這真的有必要嗎?應該不需要做比驗證更長的名字。如果用戶不想寫他自己的名字,他可以寫下任何有效的東西,比如「John Doe」。相反,您的正則表達式最終可能會使一些更稀有/異乎尋常的名稱失效。我不會這樣做。 –
[我怎樣才能找到重複的字母與Perl的正則表達式?](http://stackoverflow.com/questions/178837/how-can-i-find-repeated-letters-with-a-perl-regex) – breiti