2015-01-13 2 views
2

Я пытаюсь написать регулярное выражение на основе пользовательского ввода, которое ищет начало каждого слова и следующее слово (исключая пробел) в строке. Это текущий код, который я использую.javascript regex search начало каждого слова и следующее слово

var ndl = 'needlehay', //user input 
re = new RegExp('(?:^|\\s)' + ndl, 'gi'), //searches start of every word 
haystack = 'needle haystack needle second instance'; 
re.test(haystack); //the regex i need should find 'needle haystack' 

Любая помощь или предложения, которые я с удовольствием оценил бы.

Спасибо!

+0

'haystack.replace (/ \ s/г, '') .indexOf (NDL) = -1' – adeneo

+0

HTTP: //jsfiddle.net/0qsuqjj3/ – adeneo

+0

@adeneo - не так ли будет соответствовать 'postneedle haystack'? – freefaller

ответ

0

я итерацию по игле, и попробовать каждое изменение вручную

function check(needle, haystack) { 
    if (haystack.replace(/\s/g, '').indexOf(needle) === 0) return true; 

    return needle.split('').some(function(char, i, arr) { 
     var m = (i===0 ? '' : ' ') + needle.slice(0,i) +' '+ needle.slice(i); 
     return haystack.indexOf(m) != -1; 
    }); 
} 
+0

Thnx для скрипта, это выглядит более тщательным. – user3299613

+0

Я havent использовал какой-то метод, прежде чем мне понадобится полипол для ie8? – user3299613

+0

Да, 'Array.some' нужно было бы полилизовать или переписать для работы в IE8, но это не должно быть очень сложно. – adeneo

Смежные вопросы