使用RegEx防止前导和尾随空格

时间:2014-07-14 10:21:56

标签: regex

我们正在寻找满足以下条件的RegExp:

  1. 前3个字符应为不带空格的字母数字。
  2. 下一个字符可以是字母数字,包括空格。
  3. 图案不应以空格结尾。
  4. 长度应为3到20个字符。
  5. 我们目前有这样的事情:

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

    但上面的Reg Exp接受的最小长度为4个字符,而不是3.我主要面临将长度限制在3到20之间的问题,同时要求前3个字符必须是字母数字。

4 个答案:

答案 0 :(得分: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 :(得分:1)

怎么样?

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

只需使3个主要字符之外的所有内容都可选。

答案 2 :(得分:0)

您可以使用以下正则表达式

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

DEMO

答案 3 :(得分:0)

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

(?<!\s)$:负面的背后 - 所以$字符前面没有\s,即最后没有space(允许多个)字符之间的空格

- &GT; DEMO