|
|
|
| Есть массив данных:
01
01.1
01.11
01.11.1
01.11.11
01.11.11.110
01.11.11.112
02
02.1
Возможно ли с помощью негативной опережающей проверки выбрать все элементы, кроме элементов формата: xx.xx.xx.xxx ??
Я пытался сделать как-то так, но не получилось:
(\d\d\.)+(?!(\.\d\d\d))
То есть моя логика такая:
1) выбрать все наборы типа 'xx.'
2) исключить справа набор типа '.xxx'
Объясните, почему у меня не получилось? Я неправильно понял негативную опережающую проверку? | |
|
|
|
|
|
|
|
для: maksimka2112
(23.12.2015 в 21:22)
| | Какие проблемы?
А вот это:
из 12.34.56.789 возьмет только первые две группы - 12.34.56.789 исключив 56. потому, что ПОСЛЕ нее идет \d{3} - 789 | |
|
|
|
|
|
|
|
для: maksimka2112
(23.12.2015 в 21:22)
| | Не получилось, потому что секция (\d\d\.) уже включает в себя точку. И для последнего (\.\d\d\d) точки уже не остается.
Читаю ваше выражение по русски:
- две цифры после которых следует точка повторяются 1 или более раз и после них не следует точки и трех цифр
Под это определение тут подходят:
01.
01.11.
Но ни одной строки полностью.
Решение выглядит примерно так:
/\d{2}(\.\d{1,2})*(?!\.\d{3})/
|
Читается так:
- две цифры, после которых ноль или более раз следует точка с одной или двумя цифрами, и после них нет точки с тремя цифрами
Примерно так. Может и посложнее как-то. А может и попроще =) | |
|
|
|