我正在尝试使用正则表达式来验证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
这是一个棘手的问题,我无法弄清楚如何区分它们。
----------------------------------------------- - - - - 编辑 - - - - - - - - - - - - - - - - - - - - -
一个建议是列出非名称词,如"学院,学校,大学,技术,设计,公司",并拒绝这些。
如何基于此形成正则表达式? 我目前正在尝试使用正则表达式测试程序并继续处理它。
答案 0 :(得分:0)
如果没有构建不允许使用的单词字典,则无法解决此问题。即使使用这样的字典,也可能会出现无法自动处理的情况,并且您将经常更新字典。
只有你知道什么是可以接受的。如果是我,我会列出一些非姓名单词"如理工学院,研究所,技术,设计等,并拒绝包含一个或多个此类单词的名称。请注意不要包含可能属于某个人姓名的单词。
然而,(来自@ErwinBolwidt):你对安德森小学不太友好,安德森小学将无法在你的申请中输入他的名字。老实说,新加坡的名字可以是任何东西,因为来自世界各地的人都住在这里。人名和公司名称之间会有很多重叠。
有很多人姓氏"学校"。这里有一些信息供您参考:names.mongabay.com/data/sa/SCHOOL.html。注意我住在新加坡,我的姓氏很可能不会出现在您使用的有效姓氏的任何肯定列表中。 (我不得不承认,如果你的姓氏是学校,那么给你的儿子中间名称"小学"如果你的姓氏是学校,那将是残忍的。但
这是一个关于mr Null and what bad name checks can to do somebody的故事。我的建议是:不要检查姓名的有效性。品种太大,没有你可以遵循的规则