Имя: Пароль:
1C
1С v8
регулярное выражение для распознавания
0 location
 
naïve
31.10.22
12:51
Добрый день подскажите пож-та как можно сделать правильную регулярку.
сам с регулярными выражениями не очень дружу.
написал для распознавания в назначениях номеров такую регулярку
\b\W?(\d{6})(?!\d) она распознает 6 цифр
№000001 = 000001
#010101# = 010101
$010101 = 010101
но если такая конструкция
010101-020202, то оно распознает и первую 6-ку цифр и втоорую, а необходимо исключить и брать только первую, ну и чтобы старое не сломать, помогите плз.
1 Кирпич
 
31.10.22
13:30
ну так можно

[^-]\d{6}
2 Кирпич
 
31.10.22
13:33
или так

(?=[^-])\d{6}
3 location
 
naïve
31.10.22
13:42
(2) не подходят такие варианты т.к. при номере с буквой, он берет букву. ф000001 = ф000001
плюс такая конструкция захватывает и такие номера 010101020202 = 010101, а такие должно пропускать.
4 Кирпич
 
31.10.22
14:03

(?<=\D)\d{6}(?=[\D]+)
5 location
 
naïve
31.10.22
14:20
(4) вот так уже лучше, но берет еще из такого примера 010101-020202 = 010101, 020202
6 Кирпич
 
31.10.22
14:25

(?<=[^\d-])\d{6}(?=\D)
7 GANR
 
31.10.22
14:30
8 location
 
naïve
31.10.22
14:31
(6) спасибо большое, то что надо
9 Timon1405
 
31.10.22
16:05
если нужно найти первые 6 цифр, то не проще regexp.global  = false указать?
10 kittystark
 
31.10.22
16:52
(6) а что это за конструкция
?<=
11 Timon1405
 
31.10.22
17:39
(10) https://learn.javascript.ru/regexp-lookahead-lookbehind
ЕМНИП 1сный диалект VBScript не поддерживает их
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой