Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверить что подстрока, в конкретной позиции, соответствует указанной строке? (https://javascript.ru/forum/misc/22016-kak-proverit-chto-podstroka-v-konkretnojj-pozicii-sootvetstvuet-ukazannojj-stroke.html)

aRpi 03.10.2011 10:37

Как проверить что подстрока, в конкретной позиции, соответствует указанной строке?
 
Здравствуйте! Никак не могу разобраться.

Как при помощи регулярных выражений проверить:
Соответствует ли подстрока внутри указанной строки,
начиная с конкретного символа, но не дальше него,
указанному шаблону?

т.е.
Как узнать есть ли совпадения конкретно в указанной позиции, не сканируя всю строку целиком.

var str="0123456789text4567test";

var reg = new RegExp("text","");
reg.lastIndex=10;

if( reg.test(str) ){
   //вернет истину даже если в указанной изначально позиции нет совпадений, он обнаружит это совпадение далее, мне этого не нужно
}


ВОПРОС: как теперь проверить что подстрока (строки str),
начиная исключительно с конкретного символа, то что дальше этого символа нас не волнует.

Дело в том что метод test сканирует строку от начиная от указанного символа, и продолжает искать совпадения до конца строки. но нам это ненужно, нас не волнует есть ли там дальше совпадения
- нам нужно узнать есть ли совпадение в указанной позиции

Sweet 03.10.2011 11:51

Во-первых, у строк есть метод .search, который возвращает позицию:
alert( "0123456789text4567test".search( /text/ ) );

Во-вторых, можно составить соответствующую регулярку, типа того:
alert( /^.{5,10}text/.test( "0123456789text4567test" ) );

aRpi 03.10.2011 13:47

search выполняет поиск, ищет слева на право, а мне по сути необходимо сравнение вот какое:
if( str.substring(10, 4) == 'data'){

};

только тоже самое тока на регулярных выражениях не знаю как сделать....

Sweet 03.10.2011 14:22

У строк есть еще метод .indexOf, в котором можно указать позицию, с которой начинается поиск.
alert( checkSubstring( "0123456789text4567test", "text", 10 ) );

function checkSubstring( string, value, position ){
  return string.indexOf( value, position ) == position;
};


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