我想匹配以F或C开头的字符串,
长度必须为13
我可以包含空格,数字和大写字母,但字符串中至少必须包含2个非空格字符。
我找不到如何融合这些条件的方法,您能帮我吗?
我正在使用PCRE(PHP)
我尝试了这样的一行:
^([C,F][0-9A-Z])(.*[0-9A-Z ]{1,12})$
但是似乎只要我有2个或更多字符,它就会匹配,即使长度小于13个字符
答案 0 :(得分:1)
您可以使用
^(?=.{13}$)[CF] *(?:[0-9A-Z] *)+$
或
^(?=.{13}$)[CF]\s*(?:[0-9A-Z]\s*)+$
请参见regex demo
详细信息
^
-字符串的开头(?=.{13}$)
-字符串长度必须为13个字符(如果字符串可能有换行符,请在(?s)
之前加上^
[CF]
-C
或F
\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})$