Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск символа звездочки в строке (https://javascript.ru/forum/misc/55794-poisk-simvola-zvezdochki-v-stroke.html)

v4n 14.05.2015 15:12

Поиск символа звездочки в строке
 
Добрый день. Есть строка, в ней разделение через ***, если искать по "***" ничего не находится, с регулярными выражения пытаюсь дать ладу, но кат туго((

var key2=/[*{3}]/;
var finIndex = input.indexOf(key2,startIndex);


Подскажите пожалуйста где крутить?

ruslan_mart 14.05.2015 15:16

input.indexOf('***');



if(input.indexOf('***') != -1) {
    alert('Есть ***');
}

ksa 14.05.2015 15:29

Цитата:

Сообщение от v4n
var key2=/[*{3}]/;

Ты понимаешь, что тут написано? :)

v4n 14.05.2015 15:43

не получается((( наверн криво объяснил, объясню более подробно, мне нужно выцепить в отдельную строку содержимое между "*** часть i ***" и "*** часть n ***"

*** часть i ***
содержимое часть i
содержимое часть i
содержимое часть i
содержимое часть i
содержимое часть i
*** часть n ***

inKey = "часть i ***";
outKey = "***"
var startIndex = input.indexOf(inKey);
var endIndex = input.indexOf(outKey, startIndex);
for (var i = startIndex+inKey.length; i < endIndex; i++) {
     output += input.charAt(i);
      }


Браузер ругается на:
Invalid regular expression: /часть i ***/: Nothing to repeat

ksa 14.05.2015 15:50

Цитата:

Сообщение от v4n
объясню более подробно

Мне кажется у тебя не получилось... :(

Приведи какие-то конкретные примеры... Типа "есть вот такая строка ... хочу из нее получить вот такое"...

v4n 14.05.2015 15:50

Цитата:

Сообщение от ksa (Сообщение 370814)
Ты понимаешь, что тут написано? :)

говорюж, туго с регуляркой((( но как я себе это представляю

"Заметьте, что точка внутри квадратных скобок теряет своё особое значение и превращается просто в точку. " Взято из статьи на хабре
в [ ] находятся спец символы, которые дожны определяться, как обычные символы, в данном случае *. В фигурных скобках сколько раз повторяется символ.

Но тк это выражение не работает, возвращаюсь к твоему вопросу, я точно понимаю, что не понимаю что тут написано :)
зы JS изучаю только неделю, поэтом такие вопросы

Aetae 14.05.2015 15:51

Не стоит использовать регулярные выражения не почитав хотябы про их основы, очевидно, нэ?

Используй indexOf и slice как советуют выше.

v4n 14.05.2015 15:53

Цитата:

Сообщение от ksa (Сообщение 370825)
Мне кажется у тебя не получилось... :(

Приведи какие-то конкретные примеры... Типа "есть вот такая строка ... хочу из нее получить вот такое"...

Есть вот такая строка,
*** часть i ***
содержимое часть i
содержимое часть i
содержимое часть i
содержимое часть i
содержимое часть i
*** часть n ***

хочу получить вот такую "содержимое часть i,содержимое часть i,содержимое часть i,содержимое часть i,содержимое часть i"

ruslan_mart 14.05.2015 15:53

<textarea id="test">
*** часть 1 ***
содержимое часть 1
содержимое часть 1
содержимое часть 1
содержимое часть 1
содержимое часть 1
*** часть 2 ***
содержимое часть 2
содержимое часть 2
содержимое часть 2
содержимое часть 2
содержимое часть 2
*** часть 3 ***
содержимое часть 3
содержимое часть 3
содержимое часть 3
содержимое часть 3
содержимое часть 3
</textarea>

<script type="text/javascript">
var data = test.value.split(/\*{3}\s*часть\s*\d+\s*\*{3}/i);
data.shift();
console.log(data);
</script>

ksa 14.05.2015 15:54

Цитата:

Сообщение от v4n
в [ ] находятся спец символы, которые дожны определяться, как обычные символы, в данном случае *. В фигурных скобках сколько раз повторяется символ.

По раздельности это так. Но все в месте ты применил не так. :)

alert(/\*{3}/.test('***'));
alert(/\*\*\*/.test('***'));
alert(/[*]{3}/.test('***'));


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