Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.08.2014, 16:39
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Помогите с регуляркой
Здравствуйте!

Надо на лету сгенерировать регулярку.

Регулярка должна иметь вид /\b($word)\b/ (кстати надеюсь это правильная регулярка для нахождения целого слова)

Я пишу

var word = "trololo";
var reg1 = new RegExp("/\b($" + word + ")\b/");
var reg2 = new RegExp("/\\b($" + word + ")\\b/");
//должно получиться /\b($trololo)\b/
alert(reg1.toString());
alert(reg2.toString());

alert("как надо: " + /\b($trololo)\b/.toString());


как-то странно что
reg1 = /\b($trololo)\b/;
reg2 = new RegExp(/\b($trololo)\b/.toString());
alert(reg1.toString()==reg2.toString());


Могу конечно сгенерировать через эвал на крайний случай, но оень не хочу этого
Надеялся понять почему так происходит

Последний раз редактировалось tsigel, 08.08.2014 в 16:57.
Ответить с цитированием
  #2 (permalink)  
Старый 08.08.2014, 16:58
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Твоя ошибка в том, что не нужно использовать / в строке с регуляркой.
reg1 = /\b($trololo)\b/;
reg2 = new RegExp('\\b($trololo)\\b');
alert(reg1.toString()==reg2.toString());

Последний раз редактировалось WorM32, 08.08.2014 в 17:03.
Ответить с цитированием
  #3 (permalink)  
Старый 08.08.2014, 17:06
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

WorM32,
почему-то проблема только при составлении строки

var word = "trololo";
reg1 = new RegExp("/\\b($" + word + ")\\b/");
reg2 = new RegExp('\\b($trololo)\\b');
alert(reg1.toString()==reg2.toString());
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2014, 17:10
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

tsigel,
Да нет там проблем, я же говорю, не должно быть /.

var word = "trololo";
reg1 = new RegExp("\\b($" + word + ")\\b");
reg2 = new RegExp('\\b($trololo)\\b');
alert(reg1.toString()==reg2.toString());
Ответить с цитированием
  #5 (permalink)  
Старый 08.08.2014, 17:10
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

WorM32,
во я затупил! точно! спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 08.08.2014, 19:10
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

Только слово исключительно англицкое. \b не держит юникод. И даже в этом случае в слове желательно заэкранировать спецсимволы.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с регуляркой vivalaakam Общие вопросы Javascript 4 11.04.2014 16:35
помогите с регуляркой ast_ross Общие вопросы Javascript 40 01.02.2013 20:08
Помогите разобраться с регуляркой shtormIK Общие вопросы Javascript 6 26.06.2012 20:02
Помогите с регуляркой tazododu Общие вопросы Javascript 11 01.03.2010 09:42
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16