[英]Find substring in string without includes/indexOf/Regex in Javascript
[英]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];
使用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.