javascript - 用 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
谁能告诉我发生了什么以及如何解决它?
解决方案
正如您自己所指出的,将对象(在本例中为正则表达式实例)连接到字符串会将对象强制转换为字符串。这是预期的行为。
相反,您想要的是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.
推荐阅读
- opencv - OpenCV DNN 和 YOLOv3 的目标检测不佳
- sql - 无法使用codeigniter将数据写入数据库
- r - R - 如何对属于同一日期的两行求和?
- python - 查找重叠或完全嵌套的范围并标记它们
- rest - 如何在 SharePoint Online 中使用 REST 批处理移动多个列表附件
- swift - 如何在 SwiftUi 中创建多行文本字段?喜欢笔记应用程序?
- mysql - Mysql根据位置ID和坐标从不同位置返回项目
- c# - 如何在 Xamarin 表单中使用 Google Speech to Text api
- python - ValueError:检查目标时出错:预期的 dense_35 有 4 个维度,但得到了形状为 (1157, 1) 的数组
- sql - 扭曲的重复