2015-06-14 76 views
1

我有这样的文字:PHP的preg_match - 正则表达式

SU4R 
C45G 
G3HD 
61U14XE7AR23 914K16W471LV V6SQ5V16LG91 24YL4HW956C3 UZ26J12K615V T741MH4N739W 31ST445G726H 621EH6VW7Q6M 55N629WJ945P 56TX2W6LC949 44DS765CF739 XC262HV1JZ6V 26YD4N1Y71F7 S4M3F1XeDC0D 

我想用preg_match查找特定类型的文本代码,所以我应该包含:

  • 4或12个字符
  • 应该returs所有元素
  • 不区分大小写
  • 字母和数字

我这个结束:

preg_match("/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{4,12}/", $input_line, $output_array); 

但是:

+0

什么是除外的结果吗? 4个元素? – chris85

回答

1

使用preg_match_all(),这样的事情可能是工作
http://www.phpliveregex.com/p/bz0

# '/(?<!\S)(?i:[a-z\d]{4}|[a-z\d]{12})(?!\S)/' 

(?<! \S)      # whitespace boundary 
(?i:       # case insensitive cluster group 
     [a-z\d]{4}     # 4 alnum 
    |        # or 
     [a-z\d]{12}     # 12 alnum 
) 
(?! \S)      # whitespace boundary 
+0

谢谢,这就是它 – breq

+0

很高兴工作! – sln