Проверка строки на правильность
Добрый день! Возникла необходимость написать скрипт проверки правильности расставления скобок в строке!
Сам скрипт написал var str = 'Так не нужно (()) писать скобки '; function bracket(){ var count = 0; for (var i = 0; i <= str.length; i++) { if (str[i] == "(") { count++; } else if(str[i] == ")") { count--; } } if(count == 0) { console.log('Скобки расставлены правильно'); } else { console.log('Скобки не могут быть так расставлены'); } } bracket(); Но хотелось бы сделать его более приемлемым для глаз. Вот в таком виде: https://www.dropbox.com/s/zqau6dvs25...acket.jpg?dl=0 но я еще не особо знаком с DOM в браузере. И не знаю как сделать инпут и появление правильного и неправильного результата |
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> </head> <body> <input type="text" id="inputStr"><br> <span id="result"></span> <script> document.getElementById('inputStr').oninput = function() { var str = this.value; var resultSpan = document.getElementById('result'); if (bracket(str)) { resultSpan.innerHTML = 'Ok'; resultSpan.style.color = 'green'; } else { resultSpan.innerHTML = 'Error'; resultSpan.style.color = 'red'; } } function bracket(str) { var count = 0; for (var i = 0; i <= str.length; i++) { if (str[i] == "(") { count++; } else if (str[i] == ")") { count--; } } if (count == 0) { return true; } else { return false; } } </script> </body> </html> |
|
В который раз обращаю внимание что в JS есть встроенный парсер и его надо только натравить на выражение до того, как применить выражение.
var str='7+(9-5'; try{ eval(str); } catch(e){ alert(e); } /* Exception: missing ) in parenthetical @Scratchpad/1:11:1 */ |
function bracked(str) { var a = str.match(/\(/gm), b = str.match(/\)/gm); return a && b ? a.length == b.length : a == b; } alert( bracked('Тестовая строка без скобок') ); //true alert( bracked('Текстовая строка с (правильными скобками)') ); //true alert( bracked('Текстовая строка (с (неправильными скобками)') ); //false |
Ну да, если это не js-арифметика, то eval побреется. Но в этом случае неизбежен вопрос - кто получает эту строку и что с ней делает? Тот кто ее получает и понимает, чтобы понять - должен разобрать на токены. В процессе этого разбора, то есть парсинга, все до номера символа где нет скобки и определяется.
|
Часовой пояс GMT +3, время: 05:15. |