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, время: 05:52. |