Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2014, 09:32
Аватар для sashok
Новичок на форуме
Отправить личное сообщение для sashok Посмотреть профиль Найти все сообщения от sashok
 
Регистрация: 22.10.2013
Сообщений: 7

Проверка строки на правильность
Добрый день! Возникла необходимость написать скрипт проверки правильности расставления скобок в строке!
Сам скрипт написал
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 в браузере. И не знаю как сделать инпут и появление правильного и неправильного результата
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2014, 09:50
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

<!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>
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2014, 09:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

sashok,
Баланс открывающихся и закрывающихся скобок.Стеки в JS
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2014, 15:22
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

В который раз обращаю внимание что в JS есть встроенный парсер и его надо только натравить на выражение до того, как применить выражение.

var str='7+(9-5';
try{
eval(str);
}
catch(e){
  alert(e);
}

/*
Exception: missing ) in parenthetical
@Scratchpad/1:11:1
*/
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2014, 07:06
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2014, 07:09
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну да, если это не js-арифметика, то eval побреется. Но в этом случае неизбежен вопрос - кто получает эту строку и что с ней делает? Тот кто ее получает и понимает, чтобы понять - должен разобрать на токены. В процессе этого разбора, то есть парсинга, все до номера символа где нет скобки и определяется.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка строки на наличие символов. Severtain Серверные языки и технологии 1 26.05.2014 17:48
проверка строки на содержание определённого текста swarex Общие вопросы Javascript 1 16.10.2013 17:29
проверка формы не работает в ie begelme Javascript под браузер 6 13.08.2013 01:00
Проверка строки ввода логина в форме assessor Events/DOM/Window 17 13.11.2012 12:52
Проверка строки на соответствие регулярному выражению Telnet Общие вопросы Javascript 9 17.07.2011 22:33