Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не ищется слово в тексте :( (https://javascript.ru/forum/misc/45326-ne-ishhetsya-slovo-v-tekste.html)

фонарик 24.02.2014 00:45

Не ищется слово в тексте :(
 
Всем привет. Подскажите пожалуйста, где ошибка. Что бы я не писал в скобках после RegExp все бестолку, ничего не находится :( Даже любую букву не ищет. А нужно взять каждый элемент из массива arr и просто проверить есть ли такое же слово в предложении.


<script>
function poisk (){
var str = 'Однажды вечером Вадим увидел у горизонта яркий свет'
var arr = ["Вадим", "пробел", "вечером", "земля"]

for(i=0; i<arr.length; i++){
	var re = new RegExp(arr[i])
	var str2 = str.indexOf(re)
	alert(str2)	
	}
}
</script>

<body>
<div style="border:1px solid blue; position:absolute; cursor:pointer" onclick="poisk()">onclick="poisk()</div>

рони 24.02.2014 01:00

фонарик,
строка нужна а не RegExp
(function poisk (){
var str = 'Однажды вечером Вадим увидел у горизонта яркий свет'
var arr = ["Вадим", "пробел", "вечером", "земля"]

for(i=0; i<arr.length; i++){
	var str2 = str.indexOf(arr[i])
	alert(str2)
	}
})()

фонарик 24.02.2014 01:04

рони,
я здесь сильно упростил задачу, на самом деле у меня в длинном регулярном выражении еще должна присутствовать переменная. Вне цикла for поиск находит что нужно, а вот в этом случае - никак нет.

рони 24.02.2014 01:05

фонарик,
где код?

фонарик 24.02.2014 01:23

вот кусочек кода. По сути у меня есть большой кусок текста со значениями и словами. По типу идентификатор и куча свойств и его значений. В этом большом куске кода такие идентификаторы идут следом один за другим. Я же беру из массива идентификатор и из общего большого куска текста в котором они идут друг за другом - выделяю только тот кусок, который соответствует этому идентификатору. Затем мне в этом отдельном куске нужно проверить, есть ли там определенное свойство. Вот както так :-?

function sortingItemsByType(u){
var choise = u.options[u.selectedIndex].value;//получаем номер выбранного элемента в списке
var arr = document.getElementById('results_area').value.split(', ')//делаем массив из текста нижнего поля, его элементы будем искать в блоке текста

for(i=0; i<arr.length; i++){
	var string = document.getElementById('itemKinds_txt').value;//большой блок текста
	var re = new RegExp('\\[ "' + arr[i] + '[^\n]*')
	var str = string.match(re)//получаем конкретный блок текста из большого, содержащий искомый предмет

	var valid = str.indexOf(itp_type_[choise]);//есть ли в этом отдельном куске свойство?
	alert(valid)
}


И вот в 10й строке почему-то всегда получается что такого свойства нет хотя оно там есть. Да и вообще никакой символ не находит, не говоря уж о значении.

рони 24.02.2014 02:03

фонарик,
может так ?
var re = new RegExp(arr[i] + '[^\\n]*');

фонарик 24.02.2014 02:12

рони,
Регулярное выражение тут совсем ни причем. В 8 строке у меня в переменной str если ее вывести в алерт - кусок текста содержащий идентификатор с его свойствами и значениями. Т.е регулярное выражение выделило нужный блок текста корректно. А вот в 10й строке при попытке найти что-либо в этой переменной - ничего не получается. Вот в чем проблема. Не ищет ни значения ни даже простой любой символ.

рони 24.02.2014 02:17

фонарик,
itp_type_[choise] это что или нужно догадатся? недостаточно информации делайте макет иначе всё это гадание.

фонарик 24.02.2014 02:22

рони,
я же написал, что не ищется не то чтобы это значение, а вообще ничего. Т.е если вместо этого написать
var valid = str.indexOf('a')

то все равно ничего не изменится. Переменная valid будет всегда -1, т.е даже букву "a" не найдет в этом тексте, а уж она там точно есть.

рони 24.02.2014 02:36

фонарик,
непишите ерунды str у вас скорее всего null при таком RegExp -- код где ?????


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