我想創建一個驗證一個人的名字的正則表達式。這些應該被允許:正則表達式來驗證名稱
- 字母(大寫和小寫)
-
- 空間
這是很容易地創建一個正則表達式。問題是有些人在他們的名字中也使用了特殊字符。例如,假設名爲gûnther或François的用戶。有很多像û和ç這樣的字符可用,很難列出所有這些。
有沒有簡單的方法來檢查正確的人名?
我想創建一個驗證一個人的名字的正則表達式。這些應該被允許:正則表達式來驗證名稱
-
這是很容易地創建一個正則表達式。問題是有些人在他們的名字中也使用了特殊字符。例如,假設名爲gûnther或François的用戶。有很多像û和ç這樣的字符可用,很難列出所有這些。
有沒有簡單的方法來檢查正確的人名?
有沒有簡單的方法來檢查正確的人名?
這已經討論了好幾次了。我敢肯定的是,人們可以同意的唯一的事情就是爲了存在的名稱不能爲空字符串,即:
^.+$
(是的,我知道這可能不是什麼OP所期待的。我只是總結前面Q &爲。)
+1,唯一正確答案IMO。 – Wrikken 2011-02-24 13:34:54
我並不確切地知道你正在嘗試做的(驗證用戶名輸入?),但基本上我會保持簡單 - 如果文本包含數字,則驗證失敗。即使這可能很不穩定。
簡短的回答是否定的,沒有簡單的方法。你已經觸及最大的問題。有很多特殊情況下的口音和額外的信件掛起,這將成爲一個混亂的處理。此外,與分解到這樣的事情
^[CAPITAL_LETERS][ALL_LETERS_AND_SYMBOLS]*$
那還不是因爲「ABCD」是有幫助的表達符合這一點,你有沒有辦法知道,如果有人錯誤地輸入信息到現場,或者如果它是一個瘋狂的好萊塢父母,他們真的命名他們的孩子,或者像三明治或傘。
最後一句話+1:D – 2013-11-22 04:46:56
我有同樣的問題。首先,我想出了類似
preg_match("/^[a-zA-Z]{1,}([\s-]*[a-zA-Z\s\'-]*)$/", $name))
但後來意識到,UTF-8字符例如o一個不會允許像瑞典,中國等國家,是我的網站很重要的,因爲它是一個國際性的網站,不想強迫用戶無法輸入真實姓名。
雖然這可能是一個更簡單的解決方案,而不是試圖弄清楚如何讓像O'Malley和Brooks-Schneider這樣的名字以及Õsmar(讓那個人起來:)而寧可抓住你不想要的字符進入。對我來說,這基本上是爲了避免輸入xss JS代碼。所以我使用下面的正則表達式來過濾掉所有可能有害的字符。
preg_match("/[[email protected]#\$%\^&\*\(\)=\+\|\[\]\{\};\\:\",\.\<\>\?\/]+/", $name)
這樣,他們可以輸入任何他們想要的名字,除了字符真的不屬於任何名稱的一部分。希望這可能會有用。
^.+$
經過@jensgram答案,但正則表達式只接受所有字符串,所以它並沒有解決問題,因爲字符串需要的名字,在這種情況下,它可以是任何東西。
^([A-Z]{1})[a-z]+$
我的正則表達式只接受字符串,其中第一個字符是大寫字母,後面的字符是小寫字母。也看其他答案,這似乎是最短的正則表達式,也最簡單。
中文或西里爾文的名字怎麼樣?你使用什麼字符集? – 2011-02-24 13:26:18
例如,名稱也可以包含引號,如「O'Neill」中的引號。 – Capsule 2011-02-24 13:27:09
中文或西里爾文的名字是不允許的......應該有一個限制。我不確定哪個字符集最適合使用... – Bv202 2011-02-24 13:29:06