我想匹配一个F或C开头的字符串,
长度必须是13,
我可以包含空格,数字和大写字母,但我必须在字符串中的至少2个非空格字符。
我找不到如何融合这些条件,你能帮帮我吗?
我使用PCRE(PHP)
我尝试了线看起来像这样:
^([C,F][0-9A-Z])(.*[0-9A-Z ]{1,12})$
但似乎每当我有2个或更多字符,即使长度低于13它匹配
您可以使用
^(?=.{13}$)[CF] *(?:[0-9A-Z] *)+$
要么
^(?=.{13}$)[CF]\s*(?:[0-9A-Z]\s*)+$
细节
^
- 字符串的开始(?=.{13}$)
- 字符串必须是13个字符长((?s)
前添加^
如果字符串可能有断行)[CF]
- C
或F
\s*
- 0+空格(?:[0-9A-Z]\s*)+
- 1次以上的重复
[0-9A-Z]
- 一个大写ASCII字母或数字
\s*
- 0+空格$
- 字符串的结尾。请注意,由于[CF]
已经匹配的非空格字符,则(?:[0-9A-Z]\s*)+
已经确认有另外一个非空字符以后的字符串中。
试试这个:^[CF](?=([ ]*[0-9A-Z][ ]*){1,})([ 0-9A-Z]{12})$