Javascript RegEx Найти переменную строку без подстроки? - PullRequest
2 голосов
/ 29 января 2020
var str = "Visit tEsT!"; 
var ara = "test";
let n = str.search(/\b + ara + \b/i); // Sadly code doesn't run
document.getElementById("demo").innerHTML = n;

Я хочу найти ara переменную в str переменную с регулярным выражением search().

Ответы [ 5 ]

3 голосов
/ 29 января 2020

Вам нужно определить новое регулярное выражение из строки, чтобы использовать переменные. Вы можете сделать это с помощью new RegExp(). Вам также понадобится опция i для режима без учета регистра.

var str = "Visit tEsT!"; 
var ara = "test";
var regex = new RegExp(`\\b${ara}\\b`, 'i'); // Evaluates to "/\btest\b/i"
let n = str.search(regex);
document.getElementById("demo").innerHTML = n;
2 голосов
/ 29 января 2020

Вы должны поместить такие переменные в регулярное выражение:

var str = "Visit tEsT!"; 
var ara = "test";
let n = str.search(new RegExp(`\\b${ara}`,"i")); 
console.log(n);

Более безопасный способ - удалить специальные символы:

str.replace(/[^A-Za-z0-9\s\n]/g,"")

var str = "Visit tEsT!"; 
var searchstr = "test &#";
let n = str.search(new RegExp(`\\b${searchstr.replace(/[^A-Za-z\\s\\n]/g,"")}`,"i")); 
console.log(n);
1 голос
/ 29 января 2020

Использование search и match несколькими способами.

var str = "Visit tEsT!"; 
var ara = "test";
let n = str.search(new RegExp('\\b' + ara + '\\b', 'i'))

let n2 = str.match(new RegExp('\\b' + ara + '\\b', 'i')).index;

//document.getElementById("demo").innerHTML = n;

console.log(n, n2)
1 голос
/ 29 января 2020

Если вы хотите сопоставить строку, используйте match (). Возвращаемое значение n будет массивом, а его первое значение (n [0]) будет соответствующей строкой.

var str = "Visit tEsT!"; 
var ara = "test";
var regexp = new RegExp("\\b"+ara+"\\b", 'gi')
n = str.match(regexp);
document.getElementById("demo").innerHTML = n[0];
1 голос
/ 29 января 2020

В своем регулярном выражении вы не можете использовать оператор + в качестве конкатенации строк. Вместо этого вы можете использовать, например, строки шаблона и создать регулярное выражение с new RegExp:

var str = "Visit tEsT!"; 
var ara = "test";
var regex = new RegExp(`\\b${ara}\\b`, 'gi');  // use 'gi' flags to search globally and ignore case
let n = str.search(regex);
console.log(n);
...