2014-07-14 36 views
0

我們正在尋找滿足以下條件的正則表達式:防止前後的空格用正則表達式

  1. 的前3個字符應該是不帶空格的字母數字。
  2. 下一個字符可以是包含空格的字母數字。
  3. 該模式不應以空格結束。
  4. 長度應該是3到20個字符。

我們有這樣的事情目前:

^[A-Za-z0-9]{3}[\\sA-Za-z0-9]{0,16}[A-Za-z0-9]$ 

但上面的註冊精通接受4個字符的最小長度,而不是3。我主要是在沿着限制長度爲3〜20面臨的問題要求前3個字符必須是字母數字。

+0

如果您可以分享一些樣品,那將是非常好的。 – Braj

+0

'\\ s'通常等於文字字符\(你已經逃過它)或字面字符's'。 – h2ooooooo

+0

@ h2ooooooo我想這不是正則表達式,而是正則表達式的字符串字面值。 – sharcashmo

回答

1

您可以使用此:

(?i)^[a-z0-9]{3}(?:[a-z0-9 ]{0,16}[a-z0-9])?$ 

您可以測試出來的this demo

  • (?i)使得它不區分大小寫
  • ^錨斷言,我們是在字符串
  • [a-z0-9]{3}前三個字符
  • 可選(感謝?)匹配的開始,我們匹配...
  • [a-z0-9 ]{0,16} 0到16個字母或空格,然後是一個字母alphanum [a-z0-9]
  • $錨聲稱我們在字符串的末尾
1

那麼呢?

^[A-Za-z0-9]{3}([\\sA-Za-z0-9]{0,16}[A-Za-z0-9])?$ 

只是超越三個主角字符任意的一切應該工作。

0

你可以使用下面的正則表達式,

^(?=.{3,20}$)(?:[A-Za-z0-9]){3}(?:(?:[A-Za-z0-9 ]+)?[A-Za-z0-9]+)* 

DEMO

0
^[A-Za-z0-9]{3}[\sA-za-z0-9]{0,17}(?<!\s)$ 

(?<!\s)$:負回顧後 - 這樣的$字符不是由\s之前,也就是說,在年底沒有space (允許多個空格之間的字符)

- >DEMO