Я разработал регулярное выражение (см. Скрипку) /(\+|0|\()[\d()\s-]{6,20}\d/g
для сопоставления номеров телефонов в форматах ниже .
(\+|0|\()
должно соответствовать + или 0 или (в первую очередь
[\d()\s-]
соответствует цифрам, скобкам, пробелам и дефисам между ними.
\d
соответствует последней цифре
+43 543 765 5434
0043 543 765 5434
0543 765 5434
+43 (0) 543 765 5434
05437655434
0543-765-5434
К сожалению, это регулярное выражение также сопоставляет числа с разрывами строк между строками , например
" +43
654 416 4444 "или
" stowasser09
65
808090 "
Поэтому я подумал о замене
\s
в регулярном выражении на[^\S\r\n]
для соответствия пробелы, но не разрывы строк, но не смогли заставить его работать?Также было бы неплохо применить
{6,20}
ко всему регулярному выражению, а не только часть[\d()\s-]
, пожалуйста? Я представляю себе что-то вроде/((\+|0|\()[\d()\s-]\d){6,20}/g
, т.е. весь соответствующий телефонный номер не должен быть короче 6 и не длиннее 20 символов, включая + | 0 | (в первую очередь и последняя цифра.
Спасибо!
1 ответ
\s
означает: соответствие любому пробельному символу . просто замените его простым пробелом ' '
/(\+|0|\()[\d() -]{6,20}\d/g
См. эту демонстрацию
+|0|(
. так что просто вычтите 1
из {6,20}
. он станет {5, 19}
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
\s
пробелом (' '
)\s
на\h
, который соответствует только горизонтальным пробелам.