Страница 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 не получается :(

Подскажите, пожалуйста решение :wink:

Валидация строки функцией Clarion MATCH

Добавлено: 26 Март 2017, 14:05
Дед Пахом
Конструкции (?=pattern) и ей подобные в MATCH никак не реализуешь. Это моё мнение, конечно.

Валидация строки функцией Clarion MATCH

Добавлено: 27 Март 2017, 16:23
Developer
Дед Пахом писал(а): Конструкции (?=pattern) и ей подобные в MATCH никак не реализуешь. Это моё мнение, конечно.
Необходимо "огород" городить :(

Вот проверка на присутствие специальных символов
RVSpecialSymbolPresent = MATCH (CLIP(PasswordString),'[][`~ |!@#$%^&*()+}}{{;:_''",./>><<?\§№€]',Match:Regular) Работает :D

Вот только как выполнить проверку на символ "пробел" и короткий дефис '-' :?:

Валидация строки функцией 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 писал(а): А точно работает? Не стоит ли экранировать обратным слэшем служебные символы, типа \[\]\|\-\{{\}\<<\., ну и так далее?
Вот у меня что-то вроде...
Юрий, спасибо за помощь!

Мой пример работает точно (неоднократно проверял, чем сейчас и занимаюсь) :wink:

А вот
Yufil писал(а): Пробел, скорее всего \s, а короткий дефис '\<45>'
\s, - не работает :( а короткий дефис '\<45> - работает, работает и вариант без \ а просто <45> :wink:

MATCH(PasswordString,'[<32>]',Match:Regular) - (пробел) работает!

Да, для Clarion MATCH своя специфика регулярных выражений - брать за образец примеры регулярных выражений с HTML5, C# или Delphi в некоторых случаях просто невозможно :(

Здесь у Clarion MATCH возможности ограничены - о чём и писал Дед Пахом
Дед Пахом писал(а): Конструкции (?=pattern) и ей подобные в MATCH никак не реализуешь. Это моё мнение, конечно.
Может у кого есть более продвинутый опыт с Clarion MATCH и он предложит вариант решения
проверки сложности (стойкости) пароля для данного регулярного выражения:

Пароль: буквы, цифры, спецсимволы. Минимум 8 символов): :wink:
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

Вопрос: как отследить первый и последующие только пробелы в поле ввода STRING - при передаче переменной - он (они) пробелы уничтожаются :wink: