2016-02-03 41 views
-1

我試圖做一個正則表達式來驗證Android上常見的新加坡名稱。新加坡名稱的正則表達式驗證

我現在的正則表達式是^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$

它可以接受有空格之間的任意值,但接受了太多其他的值,這使得它不適用。

正則表達式應該接受

Benedict Tan 
James Watson 
Richard Lim Jun Qi 
Tan Ho Wen 
Eng Pin Wee 

正則表達式應該拒絕

Ngee Ann Polytechnic 
Institute of Singapore 
Singapore University of Technology and Design 
ST Electronics 
Green View Secondary School 
Anderson Primary School 
NUS 
Ministry of Education 
Singapore Press Holdings Pte Ltd 

這是一個棘手的,我無法弄清楚如何區分它們。

---------------------------------------------- - - - - -編輯 - - - - - - - - - - - - - - - - - - - - -

一個建議是列出「學院,學校,大學,技術,設計,公司」等非名詞,並拒絕這些。

如何才能基於此形成一個正則表達式? 我目前正在嘗試它在正則表達式測試儀上,仍然在努力。

+1

缺乏建立一個禁止字的字典有沒有解決這個問題。即使使用這樣的字典,也可能會出現無法自動處理的情況,您會經常更新字典。 –

+0

@Jim Garrison這就是我的想法..猜想畢竟沒有解決方案 –

+0

@JimGarrison比方說,我想讓這個更準確,接受2到4個單詞的名字怎麼樣。並拒絕只有1個字或超過4個字的名稱?我知道它仍然會接受「義安理工學院等」 –

回答

0

建立一個不允許的詞典字典沒有解決這個問題。即使使用這樣的字典,也可能會出現無法自動處理的情況,您會經常更新字典。

只有你知道什麼是可以接受的。如果是我,我會列出一些「非名詞」,如理工學院,技術學院,設計學院等,並拒絕包含一個或多個這樣的詞的名字。請注意不要包含可能成爲某人姓名一部分的文字。

然而,(來自@ErwinBolwidt):你對安德森小學不太友善,他不會在你的申請中輸入他的名字。老實說,新加坡的名字可以是任何東西,因爲來自世界各地的人都住在這裏。人名和公司名稱之間會有很多重疊。

有很多人姓「學校」。以下是一些供您參考的信息:names.mongabay.com/data/sa/SCHOOL.html。請注意,我住在新加坡,我的姓氏很可能不會出現在您要使用的有效姓氏的正面列表中。 (我不得不承認,如果你的姓氏是學校,給你的兒子中間名「小學」會很殘酷,但可能不是非法的。)

這是關於mr Null and what bad name checks can to do somebody的一個故事。我的建議:不要檢查名稱有效性。該品種太大,沒有規則,你可以按照