2014-07-14 89 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