Регулярное выражение для буквенно-цифровых строк, разделенных запятыми - PullRequest
0 голосов
/ 17 февраля 2010

У меня проблемы с созданием регулярного выражения, которое исправит правильную строку.

Строка будет в формате: любой алфавитно-цифровой символ от 3 до 5 раз, за ​​которым следует запятая, если естьбольше символов за другим - конец строки

Примеры строк: A401, CR56,4U9Y, MO16, ECZGB, A7DC, 9LN5, D52PU, UT95, YBPB0,2JWA, AAMW, KVG, 6V8W, FWE

TRIR, J107, Q9X, FMFZ, VDAS, 557, X7A, DRPB, S97O, 8U62B, IN3I, H8MC, WS4C, U04KQ, X05O.

Я пробовал несколько различных выражений, но ни одногокоторые, кажется, совпадают, если у меня есть неверная запись.Я знаю, что могу взорвать строку и пройтись по массиву, но пытаясь сделать это только одним выражением, поскольку оно кажется довольно простым, но не могу понять это.

Примеры шаблонов:

echo preg_match("/^([A-Z0-9]{3,5})[,|$]{1,}/",$str);
echo preg_match("/((?<=[^|,])([A-Z0-9]{3,5}){1}(?=[,|$])){1,}/",$str);

и различные вариации на них, но я не могу найти шаблон выигрыша, вся помощь приветствуется.

Приветствия, Psy

Ответы [ 4 ]

2 голосов
/ 17 февраля 2010
/^([a-z0-9]{3,5},)*[a-z0-9]{3,5}$/
2 голосов
/ 17 февраля 2010
/^[A-Z0-9]{3,5}(?:,[A-Z0-9]{3,5})*$/
0 голосов
/ 17 февраля 2010

Это работает для меня:

(\w{3,5})[,.]?
0 голосов
/ 17 февраля 2010

Попробуйте:

echo preg_match("/^([A-Z0-9]{3,5}(?:,|$))+/",$str);
...