Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.01.2016, 20:07
Новичок на форуме
Отправить личное сообщение для vaxxxye Посмотреть профиль Найти все сообщения от vaxxxye
 
Регистрация: 02.01.2016
Сообщений: 5

Regex диапазон
Прошу у вас помощи форумчане.Помогите пожалуйста с настройками диапазона regex под укр номера.
Вот сама схема - но сложновато как то получается
\([\d]{2,3}\)[ ]{0,2}[\d]{7}
[\d]{3}-[\d]{3}-[\d]{2}-[\d]{2}
[\d]{3}[- ()]{1}[\d]{3}-[\d]{2}-[\d]{2}
[\d]{3}\) [\d]{7}
[\d]{3}\) [\d]{3}[ -]{1}[\d]{2}[ -]{1}[\d]{2}[ -]{1}
[\d]{12}|[\d]{11}
[\d]{10}|[\d]{9}
[\d]{3}[- ()]{1}[\d]{3}[- ()]{1}[\d]{2}[- ()]{1}[\d]{2}
[\d]{3}[- ()]{1}[\d]{2}[- ()]{1}[\d]{2}[- ()]{1}[\d]{3}
[\d]{3}[- ()]{1}[\d]{2}[- ()]{1}[\d]{3}[- ()]{1}[\d]{2}
[\d]{3}[- ()]{1}[\d]{7}
[\d]{3}[- ()]{1}[\d]{4}[- ()]{1}[\d]{3}
[\d]{3}[- ()]{1}[\d]{3}[- ()]{1}[\d]{4}
Как правильно вправить в этот код что бы принимало номера с телефонами "+38..." по примеру +38(097)xxxxxxx ? хотя бы один регекс,исходя из этих рг.
Благодарю за помощь и с НГ вас.
Ответить с цитированием
  #2 (permalink)  
Старый 02.01.2016, 20:21
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

\+38\(097\)\d{6}
Ответить с цитированием
  #3 (permalink)  
Старый 02.01.2016, 20:23
Аспирант
Посмотреть профиль Найти все сообщения от callbackhell
 
Регистрация: 29.12.2015
Сообщений: 58

Сообщение от vaxxxye
+38...
если по этому шаблону, то
\+38\(\d\d\d\)\d{6}
Ответить с цитированием
  #4 (permalink)  
Старый 03.01.2016, 14:53
Новичок на форуме
Отправить личное сообщение для vaxxxye Посмотреть профиль Найти все сообщения от vaxxxye
 
Регистрация: 02.01.2016
Сообщений: 5

Сообщение от callbackhell Посмотреть сообщение
если по этому шаблону, то
\+38\(\d\d\d\)\d{6}
Можно еще пару регулярок по этому шаблону?
к примеру на такое - буду очень благодарен и сразу проверю работает ли.
+38 xxx xxx xx xx
+380 (xx) xxx-xx-xx
+380 (xx) xx-xx-xxx
+38 xxx-xxx-xx-xx
+38 (xxx)-xxx-xx-xx
+38 (xxx)xx-xx-xxx
Ответить с цитированием
  #5 (permalink)  
Старый 03.01.2016, 17:09
Новичок на форуме
Отправить личное сообщение для vaxxxye Посмотреть профиль Найти все сообщения от vaxxxye
 
Регистрация: 02.01.2016
Сообщений: 5

мне кажется тут проблема в том что схема ориентируется на posix-совместимые рг.
ибо к примеру [\d]{3}-[\d]{3}-[\d]{2}-[\d]{2} отвечает за поиск такой модели символов 097-955-55-55.
Следовательно тогда вопрос как подогнать их по +380 и 38.
по типу:
(xx) xxxxxxx
+38 xxx xxxxxxx
+38 (xxx) xxx xxx x
+380 (xx) xxx-xxx-x
+38 xxxxxxxxxx
+38 xxx xxx xx xx
+38 xxx xxx xxx x
+380 (xx) xxx-xx-xx
+380 (xx) xx-xx-xxx
+38 xxx-xxx-xx-xx
+38 (xxx)-xxx-xx-xx
+38 (xxx)xx-xx-xxx
+380xxxxxxxxxx
Ответить с цитированием
  #6 (permalink)  
Старый 03.01.2016, 19:39
Интересующийся
Посмотреть профиль Найти все сообщения от googlecallback
 
Регистрация: 03.01.2016
Сообщений: 18

vaxxxye,
просто ставьте \d вместо каждого цифрового символа, скобки и + экранируйте. Ваша задача на уровне детсада, думаете кому-то хочется упражняться в перепечатвании ваших *случаев*? Если пользуетесь регулярками, почитайте хотя бы о них.
Ответить с цитированием
  #7 (permalink)  
Старый 04.01.2016, 13:20
Новичок на форуме
Отправить личное сообщение для vaxxxye Посмотреть профиль Найти все сообщения от vaxxxye
 
Регистрация: 02.01.2016
Сообщений: 5

Понимаю,в этом не силён.
За всё время работы из моделей
(xx) xxxxxxx
+38 xxx xxxxxxx
+38 (xxx) xxx xxx x
+380 (xx) xxx-xxx-x
+38 xxxxxxxxxx
+38 xxx xxx xx xx
+38 xxx xxx xxx x
+380 (xx) xxx-xx-xx
+380 (xx) xx-xx-xxx
+38 xxx-xxx-xx-xx
+38 (xxx)-xxx-xx-xx
+38 (xxx)xx-xx-xxx
+380xxxxxxxxxx
подобрал только одну \([\d]{2}\)\ [\d]{7} для (хх)ххххххх
можно хотя бы одну форму для +38? буду оч благодарен.
Да,regex101 как инструмент не реагирует на текст с такой формой но форма правильная,проверил уже.)
Ответить с цитированием
  #8 (permalink)  
Старый 04.01.2016, 13:20
Новичок на форуме
Отправить личное сообщение для vaxxxye Посмотреть профиль Найти все сообщения от vaxxxye
 
Регистрация: 02.01.2016
Сообщений: 5

Сообщение от googlecallback Посмотреть сообщение
vaxxxye,
просто ставьте \d вместо каждого цифрового символа, скобки и + экранируйте. Ваша задача на уровне детсада, думаете кому-то хочется упражняться в перепечатвании ваших *случаев*? Если пользуетесь регулярками, почитайте хотя бы о них.
если не сложно) а то не как справится не могу
Ответить с цитированием
  #9 (permalink)  
Старый 04.01.2016, 14:54
Интересующийся
Посмотреть профиль Найти все сообщения от googlecallback
 
Регистрация: 03.01.2016
Сообщений: 18

генертор регулярных выражений
gen = function(string, splitter){
 return string
 .split(splitter)
 .map(function(s){return new RegExp(
  "^" + s
  .replace(/x/g, "\\d")
  .replace(/(\+|\(|\))/g, "\\$1") + "$"
 )}) 
}

string = "(xx) xxxxxxx\n+38 xxx xxxxxxx\n+38 (xxx) xxx xxx x\n+380 (xx) xxx-xxx-x\n+38 xxxxxxxxxx\n+38 xxx xxx xx xx\n+38 xxx xxx xxx x\n+380 (xx) xxx-xx-xx\n+380 (xx) xx-xx-xxx\n+38 xxx-xxx-xx-xx\n+38 (xxx)-xxx-xx-xx\n+38 (xxx)xx-xx-xxx\n+380xxxxxxxxxx"


regexes = gen(string, "\n")
strings = string.split(/\n/).map(function(s){return s.replace(/x/g, "1")})

with( console ){
  log( regexes )
  log(strings )
  log( regexes.map(function(re, i){return re.test(strings[i])}) )
  log( regexes.reverse().map(function(re, i){return re.test(strings[i])}))
}

///////////////////////////////////   OUT  ///////////////////////////////////////
/* 


[ /^\(\d\d\) \d\d\d\d\d\d\d$/,
  /^\+38 \d\d\d \d\d\d\d\d\d\d$/,
  /^\+38 \(\d\d\d\) \d\d\d \d\d\d \d$/,
  /^\+380 \(\d\d\) \d\d\d-\d\d\d-\d$/,
  /^\+38 \d\d\d\d\d\d\d\d\d\d$/,
  /^\+38 \d\d\d \d\d\d \d\d \d\d$/,
  /^\+38 \d\d\d \d\d\d \d\d\d \d$/,
  /^\+380 \(\d\d\) \d\d\d-\d\d-\d\d$/,
  /^\+380 \(\d\d\) \d\d-\d\d-\d\d\d$/,
  /^\+38 \d\d\d-\d\d\d-\d\d-\d\d$/,
  /^\+38 \(\d\d\d\)-\d\d\d-\d\d-\d\d$/,
  /^\+38 \(\d\d\d\)\d\d-\d\d-\d\d\d$/,
  /^\+380\d\d\d\d\d\d\d\d\d\d$/ ]
[ '(11) 1111111',
  '+38 111 1111111',
  '+38 (111) 111 111 1',
  '+380 (11) 111-111-1',
  '+38 1111111111',
  '+38 111 111 11 11',
  '+38 111 111 111 1',
  '+380 (11) 111-11-11',
  '+380 (11) 11-11-111',
  '+38 111-111-11-11',
  '+38 (111)-111-11-11',
  '+38 (111)11-11-111',
  '+3801111111111' ]
[ true,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  true,
  true ]
[ false,
  false,
  false,
  false,
  false,
  false,
  true,
  false,
  false,
  false,
  false,
  false,
  false ]
*/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический диапазон в nouislider Lenglare jQuery 0 09.10.2013 18:45
datepicker и диапазон годов tiho jQuery 5 23.07.2013 16:18
Настроить диапазон цен для слайдера ? ilyas-> jQuery 3 25.06.2013 09:03
RegEx / Last element gJam Общие вопросы Javascript 2 14.02.2013 16:33
Диапазон значений Harvey jQuery 2 12.09.2011 21:04