Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с регуляркой (https://javascript.ru/forum/misc/49347-pomogite-s-regulyarkojj.html)

tsigel 08.08.2014 16:39

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

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

Регулярка должна иметь вид /\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());


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

WorM32 08.08.2014 16:58

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

tsigel 08.08.2014 17:06

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

var word = "trololo";
reg1 = new RegExp("/\\b($" + word + ")\\b/");
reg2 = new RegExp('\\b($trololo)\\b');
alert(reg1.toString()==reg2.toString());

WorM32 08.08.2014 17:10

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

var word = "trololo";
reg1 = new RegExp("\\b($" + word + ")\\b");
reg2 = new RegExp('\\b($trololo)\\b');
alert(reg1.toString()==reg2.toString());

tsigel 08.08.2014 17:10

WorM32,
во я затупил! точно! спасибо!

Aetae 08.08.2014 19:10

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


Часовой пояс GMT +3, время: 08:00.