У меня есть пользовательская форма, в которой я беру номер телефона в качестве ввода в одном из моих полей. У меня есть два отдельных оператора RegEx, проверяющих входные данные.preg_replace в моем скрипте PHP не работает
Первый:
preg_match('/^([\(]{1}[0-9]{3}[\)]{1}[\.| |\-]{0,1}|^[0-9]{3}[\.|\-| ]?)?[0-9]{3}(\.|\-|)?[0-9]{4}$/', $phone);
и он прекрасно работает. Он может определить множество различных форматов т.е. 222-333-4444 или 2224445555.
С другой стороны, когда я пытаюсь:
preg_replace('/\+?1?[-\s.]?\(?(\d{3})\)?[-\s.]?(\d{3})[-\s.]?(\d{4})/g', '($1) $2-$3', $phone);
, который, как предполагается, форматировать входящий в строку (222) 333-4444 формат, телефон не изменяется после вызова preg_replace().
Любая помощь будет очень признательна!
Я не уверен, что вы хотите, чтобы ваши значения $ заменяли текст таким образом. У вас есть 4 группы захвата, вы ссылаетесь на 3. Не должен ли последний быть 4 доллара? – kapa
@bazmegakapa, когда я подключаю этот шаблон, показанный в preg_replace, к http://gskinner.com/RegExr/, он работает безупречно. Моя проблема связана с PHP-скриптом. Я должен делать что-то не так. – incognito