Как проверить комбинацию символов в строке?
Нужно реализовать функцию
function verif(<тут переданная строка>) { // тело функции } которая принимает строки вида:
Но вернёт false если внутри комбинации встретиться символ из другой комбинации, типа:
|
CryNet,
вариант ... function verif(str) { const reg = /(^[*#])(?![*#()а-яё]*?\1$)|[(](?![*#()а-яё]*?[)])/gi;// return !reg.test(str) } console.log(verif("#АБВГДЕЁЖЗИЙ(КЛМНОПРС)ТУФХЦЧШЩЬЫЪЭЮЯ#")); //true console.log(verif("*АБВГДЕЁЖЗИЙКЛМН(ОПРСТУФХЦЧШЩЬЫЪЭЮЯ*")); //false console.log(verif("#абвгдеёжзийклмнопрстуфхцчшщьыъэюя#")); //true |
рони, не всему отвечает, например:
console.log(verif("#АБВГДЕЁЖЗИЙ(КЛМ ОПРС)ТУФХЦЧШЩЬ)ЫЪЭЮЯ#")) будет true, но должно быть false. |
laimas,
:) если так? function verif(str) { const reg = /(^[*#])[()а-яё]*\1$/i; const rg = /[(][^()]*?[)]/; const r = /[()]/; if(!reg.test(str)) return false; for (; rg.test(str); ) {rg.lastIndex = 0; str = str.replace(rg, ''); rg.lastIndex = 0;} return !r.test(str) } console.log(verif("#АБВГДЕЁЖЗИЙ(КЛМНОПРС)ТУФХЦЧШЩЬЫЪЭЮЯ#")); //true console.log(verif("*АБВГДЕЁЖЗИЙКЛМН(ОПРСТУФХЦЧШЩЬЫЪЭЮЯ*")); //false console.log(verif("#абвгдеёжзийклмнопрстуфхцчшщьыъэюя#")); //true console.log(verif("#АБВГДЕЁЖЗИЙ(КЛМНОПРС)ТУФХЦЧШЩЬЫ)ЪЭЮЯ#")); //false |
Ну если скобки в скобках недопустимы, то тоже не пойдет.
|
рони, видимо лучше не напрягать разборкой по различным выражениям, а получить массив посимвольный, проверить крайние, затем срез 1, -1 обойти циклом, проверяя - если допустимый символ (не # или *), продолжаем, иначе если ")", а открывающая скобка не запоминалась, то ошибка, иначе очистить открывающую скобку. Если "(" и следующий индекс не символ разрешенный, то ошибка, иначе запомнить открывающую скобку.
|
laimas,
подожду, может уже достаточно. |
Цитата:
|
Цитата:
|
Я не очень понял, что требуется. Это разновидность задачи о проверке скобочной целостности с тремя видами скобок?
|
Часовой пояс GMT +3, время: 20:24. |