2013-05-08 64 views
-2

我在注册表中验证名字,它只允许使用小写字母和大写字母以及(,/,#, - )的字母。Java和android中的验证模式?

my validation patter is ^(([a-zA-Z])(/,#,-))*$ 

但它没有正确验证。请任何人帮我解决这个问题,并给出一个提示,正确地创建模式。

+0

你能举一个例子,它不能正常工作吗? – sandkasten 2013-05-08 11:46:10

+0

“AsdF-”是否匹配? “As-Df”?它可以是空的吗?它可以有空间吗?一些名字由两个或更多名字组成)你应该定义它何时应该工作,什么时候不应该。否则,可能需要我们更多的时间来帮助你。顺便说一下,对于第一个名字,#和/ /实际使用?我只是困惑 – Korcholis 2013-05-08 12:00:14

回答

1
boolean test = "a#aa-/".matches("^[a-zA-Z#/-]+$"); 
Log.e("TEst", "test " + test); 

尝试这种方式

1

正如sandkasten说你应该提供什么不起作用的例子。我认为你正在寻找这个

^([a-zA-Z]|[/#-])*$ 

管道(|)表示字符或其中的一个/#*

2

试试这个表达式:[A-ZA-Z] +(\ - [一个-ZA-Z] +)?

您可以测试正则表达式在线上有所不同网站如this one

1

根据您的场所(使用/ - #,未使用的空间,但作为一个名字),它可能是这样的:

^([A-Z][a-z]*([\/#\-][A-Z][a-z]*)*)$ 

这将匹配:

  • 阿尔弗雷德
  • 罗伯特 - 路易斯
  • 约翰#约瑟夫
  • 凯文/贝蒂

,但不会

  • 查尔斯(L是大写和shouln't)
  • Mona Sue(空间)
  • 便士(P不是大写)

但是,您绝对需要给我们一些例子,或者我们只是在玩而不是帮助您。我们没有水晶球(至少是我)