首页 > 解决方案 > 用 JavaScript 中的正则表达式比较两个字符串

问题描述

我对正则表达式相当陌生,我正在尝试使用正则表达式作为占位符/通配符来比较两个字符串,以获得某些值,这些值可能会在我不关心的字符串中发生变化。但是,如果我实现以下代码:

var regex = /my .* is/;    

var str1 = "Hello, my name is... not important.";
var str2 = "Hello, " + regex + "... not important.";


var result = str1 === str2;

console.log(str1);
console.log(str2);
console.log(result);

我希望回报是:

"Hello, my name is... not important."
"Hello, my name is... not important."
true

相反,我得到了这个:

"Hello, my name is... not important."
"Hello, /my .* is/... not important."
false

谁能告诉我发生了什么以及如何解决它?

标签: javascriptregex

解决方案


正如您自己所指出的,将对象(在本例中为正则表达式实例)连接到字符串会将对象强制转换为字符串。这是预期的行为。

相反,您想要的是regex.test(string)string.match(regex)也可以工作,但在语义上不准确)。

let regex1 = /my .* is/;
let regex2 = /^Hello, my .* is... not important\.$/;

let str = "Hello, my name is... not important.";

console.log(str);
console.log(regex1);
console.log(regex2);
console.log(regex1.test(str));
console.log(regex2.test(str));

regex1将测试短语my _blank_ is,而regex2将测试确切的语句匹配Hello... important.


推荐阅读