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 ? хотя бы один регекс,исходя из этих рг. Благодарю за помощь и с НГ вас. |
\+38\(097\)\d{6} |
Цитата:
\+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 |
мне кажется тут проблема в том что схема ориентируется на 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 |
vaxxxye,
просто ставьте \d вместо каждого цифрового символа, скобки и + экранируйте. Ваша задача на уровне детсада, думаете кому-то хочется упражняться в перепечатвании ваших *случаев*? Если пользуетесь регулярками, почитайте хотя бы о них. |
Понимаю,в этом не силён.
За всё время работы из моделей (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 как инструмент не реагирует на текст с такой формой но форма правильная,проверил уже.) |
Цитата:
|
генертор регулярных выражений
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 ] */ |
Часовой пояс GMT +3, время: 22:04. |