2015-06-14 117 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