Страница 2 из 2
Валидация строки функцией Clarion MATCH
Добавлено: 26 Март 2017, 4:39
Developer
\w [[:word:]] Буквенный или цифровой символ или знак подчёркивания - [a-zA-Z0-9-]
\W [^[:word:]] Любой символ, кроме буквенного или цифрового символа или знака подчёркивания - [^a-zA-Z0-9-]
- Не универсальный метод соответствия

Валидация строки функцией Clarion MATCH
Добавлено: 26 Март 2017, 5:35
Developer
Какая правильно то оформить строку для Clarion MATH
выполняющей проверку соблюдения условия сложности пароля
Пароль (Строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов):
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
На Clarion MATCH не получается
Подскажите, пожалуйста решение

Валидация строки функцией Clarion MATCH
Добавлено: 26 Март 2017, 14:05
Дед Пахом
Конструкции (?=pattern) и ей подобные в MATCH никак не реализуешь. Это моё мнение, конечно.
Валидация строки функцией Clarion MATCH
Добавлено: 27 Март 2017, 16:23
Developer
Дед Пахом писал(а): Конструкции (?=pattern) и ей подобные в MATCH никак не реализуешь. Это моё мнение, конечно.
Необходимо "огород" городить
Вот проверка на присутствие специальных символов
RVSpecialSymbolPresent = MATCH (CLIP(PasswordString),'[][`~ |!@#$%^&*()+}}{{;:_''",./>><<?\§№€]',Match:Regular) Работает
Вот только как выполнить проверку на символ "пробел" и короткий дефис '-'

Валидация строки функцией Clarion MATCH
Добавлено: 27 Март 2017, 17:00
Yufil
Пробел, скорее всего \s, а короткий дефис '\<45>'
Валидация строки функцией Clarion MATCH
Добавлено: 27 Март 2017, 18:41
Yufil
А точно работает? Не стоит ли экранировать обратным слэшем служебные символы, типа \[\]\|\-\{{\}\<<\., ну и так далее?
Вот у меня что-то вроде...
Код: Выделить всё
\<!--\*tqscript\.start-->(?P<tqscript>.*?)\<!--\*tqscript\.finish-->(?as)
Код: Выделить всё
loop\s+(?P<var>[_a-zA-Z0-9][_a-zA-Z0-9]*)\s*=\s*(?P<exmin>.+?)\s+to\s+(?P<exmax>.+?)\s+by\s+(?P<exby>.+?)$
Валидация строки функцией Clarion MATCH
Добавлено: 27 Март 2017, 19:27
Developer
Yufil писал(а): А точно работает? Не стоит ли экранировать обратным слэшем служебные символы, типа \[\]\|\-\{{\}\<<\., ну и так далее?
Вот у меня что-то вроде...
Юрий, спасибо за помощь!
Мой пример работает точно (неоднократно проверял, чем сейчас и занимаюсь)
А вот
Yufil писал(а): Пробел, скорее всего \s, а короткий дефис '\<45>'
\s, - не работает

а короткий дефис '\<45> - работает, работает и вариант без \ а просто <45>
MATCH(PasswordString,'[<32>]',Match:Regular) - (пробел) работает!
Да, для Clarion MATCH своя специфика регулярных выражений - брать за образец примеры регулярных выражений с HTML5, C# или Delphi в некоторых случаях просто невозможно
Здесь у Clarion MATCH возможности ограничены - о чём и писал Дед Пахом
Дед Пахом писал(а): Конструкции (?=pattern) и ей подобные в MATCH никак не реализуешь. Это моё мнение, конечно.
Может у кого есть более продвинутый опыт с Clarion MATCH и он предложит вариант решения
проверки сложности (стойкости) пароля для данного регулярного выражения:
Пароль: буквы, цифры, спецсимволы. Минимум 8 символов):
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
Вопрос: как отследить первый и последующие только пробелы в поле ввода STRING - при передаче переменной - он (они) пробелы уничтожаются
