Пятница, 29 Ноября 2024, 12:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
RegExp и переменные
mobipakДата: Вторник, 27 Августа 2013, 08:29 | Сообщение # 1
Подрывник
Сейчас нет на сайте
Я создаю программу, которая бы проверяла жесткое соответстие с начала до конца текста.

Тоесть вот так:

Задан некий текст, например abcabcabcabc. Сначала программа берет первый символ a, но натыкается на другой символ, потом ab, натыкается на ca, переходит дальше: берет уже три символа abc, потом продолжает дальше, и так до конца. Было соответствие от начала до конца - программа выводит win. (true == win)
Собственно, код программы:
Код
var yes = 0;

for(i==0;i++1;i != math.round((textn.length)/2) && yes == 0){

      var ic = textn.substring(1,i); // Переменная textn - это text, введенный в textarea

      var check = textn.replace(/[ic]?/i,) // По идее, должна удалить найденный текст

      if(check.length == 0){yes = 1}; // Проверяем, все ли заменено и если да, то останавливаем цикл выставлением переменной -> нарушаем правильность условия

} // Если нет, то цикл продолжит повторяться.

// Вывод текста
// Проверка условий

if(yes == 1){document.write('Программа нашла соответствие!')};

if(i == math.round((textn.length)/2) && yes == 0){document.write('Совпадений не найдено.')};

Всю ответственность по разнюхиванию берет на себя регэксп /[ic]?/i, он-то и вызывает много вопросов.

Как сделать так, чтобы регэксп не интерпретировался как текст или служебный символ, а именно как переменная?

Добавлено (27.08.2013, 08:29)
---------------------------------------------
Нашел решение проблемы. Походу, так и надо.
Код
new RegExp ([ic]?,'m')

Код
var yes = 0;

for(i=0;i++;i != math.round((textn.length)/2) && yes == 0){

       var ic = textn.substring(1,i); // Переменная textn - это text, введенный в textarea

       var cor2 = new RegExp ([ic]?,'m')
           
       var check = textn.replace(cor2,) // По идее, должна удалить найденный текст

       if(check.length == 0){yes = 1}; // Проверяем, все ли заменено и если да, то останавливаем цикл выставлением переменной -> нарушаем правильность условия

} // Если нет, то цикл продолжит повторяться.

// Вывод текста
// Проверка условий

if(yes == 1){document.write('Программа нашла соответствие!')};

if(i == math.round((textn.length)/2) && yes == 0){document.write('Совпадений не найдено.')};

Алсо, нужно экранировать обратные слеши, если они вдруг попадутся. Сейчас надо подумать, вроде бы как через тот же replace...
Алсо2, исправлено неправильное представление инкремента.


Сообщение отредактировал mobipak - Вторник, 27 Августа 2013, 08:31
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг