我一直在用RegEx掙扎,所以請原諒我,如果這看起來像是一個可怕的方法來解決我的問題。接受RegEx中的國際名字字符
當用戶輸入姓氏和名字我開始只使用基本的,檢查大小寫,空格,撇號和連字符
if (!preg_match("/^[a-zA-Z\s'-]+$/", $name)) { // Error }
現在我知道這是不是最好的,因爲人們可以擁有諸如:Martin Luther King,Jr.博士(用逗號和fullstops)。所以我認爲通過改變它可以使它稍微有效一些。
if (!preg_match("/^[a-zA-Z\s,.'-]+$/", $name)) { // Error }
我然後看到我知道在我的Facebook誰寫她的名字爲西安,這讓我思考含有變音符號,以及日本講/中國/韓國/俄文字符太名稱的女孩名字。所以我開始尋找並通過在其中寫入每個字符來找到方法。
if (!preg_match("/^[a-zA-Z\sàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]+$/u", $first_name)) { // Error }
你可以想像,這是非常長篇大論,我敢肯定有一個更簡單的正則表達式可以做到這一點。就像我所說的,我已經四處搜尋,但這是我能做的最好的。
那麼,什麼是檢查大寫和小寫字符,逗號,句號,省略號,hypens,變音符號,拉丁語,日語/俄語等
除非您先進行標準化,否則這種方法無效。 – tchrist