2014-06-20 94 views
-2

我想爲人名進行TextField驗證。我想有個人的名字是有效的,如果:人名正則表達式

  1. 它僅包含英文字母a-zA-Z
  2. 它可以包含多個空格字符
  3. 它可以包含任何沒有。點名字的像A.B. Devilliers

我試過了嗎?

NAME_REGEX="(\\w|\\s|(\\.))+" 

注意:我正在使用Java。

當我有NAME_REGEX="(\\w|\\s)+"然後規則1.和2.遵循,但我也想要3.規則。

+0

'NAME_REGEX'做你想要的嗎? –

+1

你如何處理那些不遵守這些規則的名字?包含「üöäßí」字符... 特別是* NAMES *拼寫可能非常重要... – DThought

+0

也許使用'NAME_REGEX =「(\\ w | \\ s |([AZ] \\。)) +「'確保點在大寫字母之後:)正如DThought所說的,你的規則可能會出現問題,並且名稱很少(例如我的例子包含一些' - ') – NiziL

回答

0

試試這個正則表達式的java :::

NameRegex = ^^[a-z A-Z\\.\\s]+$ 
+0

它接受一個有10個空格的名字。 – Kent

+0

不,它會佔用任何空間 –

+0

我認爲它應該是'^ [a-z A-Z \\。\\ s] + $'。你正在增加一個額外的^ –

2

這是很難指定哪些應該在一個名字被允許,所以想調整過多可能是適得其反。如果有的話,我會犯錯或允許更多的事情。

(?i)^(?:[a-z]+(?: |\. ?)?)+[a-z]$ 

the demo,看哪個名字被允許:

像你想這樣的事情在我看來。

  • 我假設你要開始和以字母
  • 您還沒有指定任何字母必須明確大寫結束,因此這將接受aLan parsoN
  • 如果你想允許引號或其他字符,讓我知道。

它是如何工作的:

  • (?i)使我們在不區分大小寫模式
  • ^斷言,我們是在字符串的開頭
  • (?:[a-z]+(?: |\. ?)?)+比賽{任何字母,可選後跟一個空格或點或點空格},一次或多次
  • [a-z]$確保最後一個ch字符是一個字母
+0

你是一些什麼權利,但我也想要沒有點的名稱,如「** Virat Kohli **」 –

+0

是的,這允許沒有點的名稱。立即發佈演示和解釋。 :) – zx81

+0

好的,添加演示和解釋,讓我知道如果你需要任何調整。 :) – zx81