У меня есть строка, подобная приведенной ниже
Hello there how are you?
Я хочу найти в строке подстроку 'there how'
.Поэтому я бы сделал что-то вроде этого
var str = "Hello there how are you?";
var term = "there how"
var res = str.match("\\s" + term + "\\s"); // # /s is used to ensure the match should be an independent phrase
Но теперь проблема в том, что если я получу вариант строки, то совпадение не произойдет.Например, для таких строк:
Если между словами есть большой интервал
Hello there how are you?
Если некоторые буквы пишутся с заглавной буквы
Hello There How are you?
Что я хочусделать, чтобы убедиться, что пока подстрока 'there how'
присутствует в строке как отдельная фраза (не как Hellothere how are you?
или Hello there howare you?
и т. д.), я смогу найти совпадение.
Какможно ли достичь цели?
Благодаря @Wiktor Stribiżew он предложил это решение ниже
var ss = ["Hello there how are you?", "Hello there how are you?", "Hello There How are you?"];
var term = "there how";
var rx = new RegExp("(?<!\\S)" + term.replace(/ /g, "\\s+") + "(?!\\S)", "i");
for (var i=0; i<ss.length; i++) {
var m = ss[i].match(rx) || "";
console.log(m[0]);
}
Хотя это работает в онлайн-компиляторе nodejs, например, repl https://repl.it/repls/AwkwardSpitefulAnimatronics, оно выиграло 'не работает в обычном javascript.
Я получаю эту ошибку ниже в javascript для этой строки
var rx = new RegExp("(?<!\\S)" + term.replace(/ /g, "\\s+") + "(?!\\S)", "i");
SyntaxError: invalid regexp group
Как мне достичь своей цели?