繁体   English   中英

Javascript RegEx 查找没有子字符串的变量字符串?

[英]Javascript RegEx Find Variable String Without Substring?

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;

我想用正则表达式search()str变量中找到ara变量。

您需要从字符串定义一个新的正则表达式才能使用变量。您可以使用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;

你必须把这样的变量放在正则表达式中:

 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);

在您的正则表达式中,您不能将+运算符用作字符串连接器。 相反,您可以使用例如模板字符串并使用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);

如果您想要匹配的字符串,请改用 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];

使用searchmatch多种方式。

 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM