php preg соответствует строке, игнорирующей пробел - PullRequest
2 голосов
/ 02 декабря 2010

Здравствуйте, мне нужно изменить это выражение, чтобы оно игнорировало пробелы

preg_match("/([a-zA-Z\s]{2,}\,\s)+(RED|BLUE|GREEN|BLACK)$/i",$query, $matches))

$query = "Honda Accord, RED"

, поэтому он все равно получает совпадение, даже если есть добавленные пробелы, такие как;

$query = "   Honda    Accord   ,    RED   "

В основном мне нужны спички назад как Honda Accord, RED с правильным интервалом. Как видите, я не эксперт по регулярным выражениям :)

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010
$query = "   Honda    Accord   ,    RED   "; 
$query = trim($query); // remove spaces at the ends //
$query = preg_replace('/\s+/', ' ', $query); // make sure there aren't multiple spaces //
$query = preg_replace('/\s?,\s?/', ', ', $query); // enforce the 'word, word' format //
preg_match("/([a-zA-Z\s]{2,}\,\s)+(RED|BLUE|GREEN|BLACK)$/i",$query, $matches);

Это форматирует вашу строку так, чтобы она имела стандартную форму, но если вы просто хотите получить совпадения, достаточно добавить \s*, где это необходимо.

0 голосов
/ 02 декабря 2010

Вам нужны пробелы до и после цвета, а также в начале:

^\s*([a-zA-Z\s]{2,},\s)+\s*(RED|BLUE|GREEN|BLACK)\s*$

Рубулярная ссылка

...