如何匹配在定义的长度上具有2个或更多caracters且可以有空格的线?

时间:2019-02-08 10:05:23

标签: regex pcre

我想匹配以F或C开头的字符串,

长度必须为13

我可以包含空格,数字和大写字母,但字符串中至少必须包含2个非空格字符。

我找不到如何融合这些条件的方法,您能帮我吗?

我正在使用PCRE(PHP)

我尝试了这样的一行:

^([C,F][0-9A-Z])(.*[0-9A-Z ]{1,12})$

但是似乎只要我有2个或更多字符,它就会匹配,即使长度小于13个字符

2 个答案:

答案 0 :(得分:1)

您可以使用

^(?=.{13}$)[CF] *(?:[0-9A-Z] *)+$

^(?=.{13}$)[CF]\s*(?:[0-9A-Z]\s*)+$

请参见regex demo

详细信息

  • ^-字符串的开头
  • (?=.{13}$)-字符串长度必须为13个字符(如果字符串可能有换行符,请在(?s)之前加上^
  • [CF]-CF
  • \s*-超过0个空格
  • (?:[0-9A-Z]\s*)+-重复1次或更多次
    • [0-9A-Z]-大写ASCII字母或数字
    • \s*-超过0个空格
  • $-字符串的结尾。

请注意,由于[CF]已经与一个非空格字符匹配,因此(?:[0-9A-Z]\s*)+已经确保该字符串后面还有另一个非空格字符。

答案 1 :(得分:0)

尝试一下:^[CF](?=([ ]*[0-9A-Z][ ]*){1,})([ 0-9A-Z]{12})$