Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти слова с помощью регулярного выражения (https://javascript.ru/forum/misc/72890-najjti-slova-s-pomoshhyu-regulyarnogo-vyrazheniya.html)

MrFlatman 05.03.2018 10:50

Найти слова с помощью регулярного выражения
 
Есть строка, имеет вид стр1 стр2 стр3 стр1 в ответ должно вывести стр1 стр2 стр1, он он выводит null, ему не нравиться, все это должно стоять рядом, а как сделать так, чтобы он находил слова не смотря на препятствия?

function valid(form) {

        var str = form.str.value;
        var a = form.regul.value;
        var b = new RegExp(a + "+", "ig");
        var result = str.match(b);
        console.log(a);
        document.getElementById('ste').innerHTML = "Найдено: " +result;

    }

j0hnik 05.03.2018 11:15

если нужно удалить стр3, это можно сделать с помощью метода replace()

MrFlatman 05.03.2018 11:21

Цитата:

Сообщение от j0hnik (Сообщение 479805)
если нужно удалить стр3, это можно сделать с помощью метода replace()

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

j0hnik 05.03.2018 11:31

почти все методы работы со строками возвращают НОВУЮ строку.
Если не получается с регуляркой, видимо неправильно ее составили.

рони 05.03.2018 12:34

MrFlatman,
var str = "стр1 стр2 стр3 стр1";
var a = "стр1 стр2 стр1";
var b = new RegExp(a.split(/\s+/).join(".*?"), "ig");
var result = str.match(b);
alert(result);

ksa 05.03.2018 13:40

Цитата:

Сообщение от MrFlatman
Есть строка, имеет вид стр1 стр2 стр3 стр1 в ответ должно вывести стр1 стр2 стр1

Как вариант...

var str='стр1 стр2 стр3 стр1';
var re=/стр(1|2)/g;
alert(str.match(re).join(' '));

Или вовсе так

var str='стр1 стр2 стр3 стр1';
var re=/(стр1)|(стр2)/g;
alert(str.match(re).join(' '));


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