2015-07-21 48 views
0

我嘗試驗證名稱字段,並且對於此字段,我希望允許最終用戶添加任何內容,如Merianos Nikos,Μέριανος Νίκος(希臘語)或來自任何其他語言的字符具有相同的形式。正則表達式允許任何語言字符的全名形式,並以字母開頭

形式是首字母大寫,其餘字母較低,至少有兩個單詞。

正確我有這個正則表達式/^([A-Z][a-z]*((\s)))+[A-Z][a-z]*$/與英語完美搭配,但與希臘語或其他語言無關。

最後,我想驗證另一個字段的首字母大寫,首字母大寫,但是這個字段也可以包含單詞後面的字符。

目前我使用followign regex /^[\s\w\.\-_]+$/的工作,但我又有希臘語和其他語言的問題。

+1

用什麼語言來運行正則表達式? PHP還是JS? –

+0

兩者。我使用JS作爲前端,然後我使用PHP作爲後端 –

+1

您是否有權訪問JS中的XRegExp?你可以使用'XRegExp('^(\\ pLu \\ pLl * \\ s)+ \\ pLu \\ pLl * $');'。 –

回答

2

你可以通過使用Unicode Categories來做到這一點。因此,正則表達式^\p{Lu}\p{Ll}+(\p{Lu}\p{Ll}+)*$將匹配大寫字母,後跟一個或多個小寫字母,後跟0個或多個其他名稱,由空格分隔。表達的一個例子如here所示。

關於你的第二點,你可以使用類似^\p{Lu}\p{Ll}*$的東西,它至少需要1個大寫字母,後面跟0個或更多個小寫字母。

上面的表達式假定您的姓名中沒有引號,例如O'Brian或破折號Foo-bar。如果你想處理特定的希臘名字,並且你知道希臘名字中既沒有引號也沒有破折號,那麼這應該不成問題。

通常只需確保提供的名稱不是空的,而不是指定某種嚴格的形式。有關此事的更多信息,請參閱this問題。

+0

感謝您的回覆。這看起來是迄今爲止最好的解決方案。現在我遇到的問題是,給定的正則表達式不能用於JS。regex101.com,當我使用JS理解'\ p'作爲文字,你有什麼想法嗎? –

+0

@MerianosNikos:[This](http://stackoverflow.com/questions/280712/javascript-unicode-regexes)可能會有所幫助。這就是說,我不會推薦你使用一個正則表達式來檢查*有效*的名字 – npinti

+0

由於它們屬於'Lo',所以不允許使用中文和日文字符,'Lt'中也有一些希臘字符 – nhahtdh

相關問題