是否可以使用preg_match
匹配两个不同长度的字符串?如果是,怎么样?
我正在寻找类似的东西:
preg_match("/^[a-zA-Z0-9]{13|25}$/", $string);
如同,如果$string
的长度恰好为13 或 25个字符,则返回true。
P.S。:我知道应该是{13,25}
- {min,max}
- ,但我对一段时间内的匹配不感兴趣。
答案 0 :(得分:4)
这是一种快速的方式:
preg_match('/^[a-zA-Z0-9]{13}([a-zA-Z0-9]{12})?$/', $string);
答案 1 :(得分:3)
像
这样的东西preg_match("/^([a-zA-Z0-9]{13}|[a-zA-Z0-9]{25})$/", $string);
([a-zA-Z0-9]{13}|[a-zA-Z0-9]{25}
交替匹配长度为13或25 答案 2 :(得分:1)
我知道您的问题是关于使用正则表达式进行此操作,但通常最好的做法是尽可能避免使用正则表达式。原因如下:
所以这是一种非正则表达式方法。
if ( in_array(strlen($string),array(13,25)) && ctype_alnum($string) ) {
// good
} else {
// bad
}