Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярка ... (https://javascript.ru/forum/misc/31848-regulyarka.html)

Арман 23.09.2012 12:09

Регулярка ...
 
Всем привет!

Проблема такого рода:
произвожу поиск по началу строки:
var pattern = new RegExp('^'+res_match, 'i');
if(pattern.test(str))
{
   ///
}

Но если встречается точка в строке, то регулярка не срабатывает.
Пробовал так:
str = 'ar.man';
if(pattern.test(str.replace(/\./g, '\\.')))
{
   //
}

но тщетно.
Может подскажет кто ?
if(str.search(pattern) != -1)
тоже не работает, если точка в строке попадается.

Gvozd 23.09.2012 13:19

Цитата:

Сообщение от Арман
res_match

Если вы хотите сделать из этой переменной регулярку точно соответсвующую этой строке, то надо в ней все экранировать - точки, слеши, скобки всех мастей

oneguy 23.09.2012 15:42

Gvozd правильно сказал, но если нужно проверить, не начинается ли строка з заданной подстроки, то лучше для этого использовать обычный цикл, а не регулярку.

Aetae 23.09.2012 15:46

Цитата:

Сообщение от oneguy (Сообщение 206040)
использовать обычный цикл, а не регулярку.

Вы имели ввиду обычный indexOf?

oneguy 23.09.2012 16:03

Цитата:

Сообщение от Aetae
Вы имели ввиду обычный indexOf?

Нет, цикл for или while.

Арман 23.09.2012 16:30

Цитата:

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

:lol:
Вы, наверно, кроме
Цитата:

Сообщение от oneguy (Сообщение 206043)
цикл for или while

ничего не знаете ?)
Форум javascript)
Вторая тема, и от таких бредовых ответов больше и спрашивать тут ничего не хочется...

Ответ:
if(str.toLowerCase().indexOf(res_match.toLowerCase()) == 0)
{
   //
}

melky 23.09.2012 16:53

Чем ответ Gvozd Вас не устраивает? И что находится в res_match?

oneguy 23.09.2012 17:27

Цитата:

Сообщение от Арман
Ответ:
1 if(str.toLowerCase().indexOf(res_match.toLowerCase ()) == 0)
2 {
3 //
4 }

Мен кажется, так делать обычно хуже, поскольку если подстрока не будет найдена вначале, то indexOf будет её искать по всей строке, что является лишней тратой процессорного времени.

bes 23.09.2012 17:28

Цитата:

Сообщение от Арман
ничего не знаете ?)
Форум javascript)
Вторая тема, и от таких бредовых ответов больше и спрашивать тут ничего не хочется...

да, вали, скатертью дорожка, раз ума много, не надо было даже и начинать спрашивать, а спрашивать, чтобы потом сказать, какие все тупые, для этого у нас есть президент (сейчас в заслуженном отпуске)

bes 23.09.2012 17:37

лажанул с +, буду исправляться :D
UPD: исправился :victory:


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