Я пытаюсь сопоставить номера телефонов. Кажется, что это нормально для многих случаев, но по какой-то причине это не срабатывает. Я не могу понять, почему.Регулярное выражение для соответствия номеру телефона
Выкройка:
/^(\d)?[^\d]*?(\d{3}).*?(\d{3}).*?(\d{4}).*(\d{0,6}).*/
значение Телефон:
4012538900 (227)
Это не соответствует 227
по какой-то причине. Если я изменю свой \d{0,6}
на \d{3}
, кажется, все в порядке, с использованием диапазона \d{1,x}
(x> 1). Это, конечно же, нарушит мои другие ценности, поэтому это не решение.
Спасибо, это действительно лучше, и я буду использовать его вместо этого. Мне все равно хотелось бы знать, почему регулярное выражение не соответствует моему шаблону. – PenguinSource
первый. * Matches "(", \ d {0,6} должен соответствовать 227, а второй. * Должен соответствовать ")". Я понимаю, что использование цифр (^ D) лучше, и я буду использовать это с этого момента. И я понимаю. * Я потребляю свои цифры, но почему он это делает, а не соответствует \ d – PenguinSource
Нет, @PenguinSource, это не то, что он будет делать. Для '. * (\ D {0,6}). * /', Первая '. *' Будет соответствовать остальной части строки, потому что она жадна. Тогда '(\ d {0,6})' будет соответствовать 0 цифрам, а затем '. *' Будет соответствовать 0 символам. – DavidS