gpt4 book ai didi

javascript - 正则表达式 ("str","i") 和 '/' +"str"+'/i' 之间有什么区别

转载 作者:行者123 更新时间:2023-11-28 15:23:07 24 4
gpt4 key购买 nike

我尝试通过创建如下字符串来执行不区分大小写的正则表达式搜索:

var regEx = '/'+myStr+'/i';

但是当我在搜索中使用它时,它总是返回-1

如果我使用:

var regEx = RegExp(myStr,'i');

它的表现就像冠军一样。

我只是想了解为什么?

最佳答案

您的第一个示例将创建一个字符串,而不是正则表达式对象。

var myStr = 'test';
var regEx = '/'+myStr+'/i';
console.log(typeof regEx);//string

使用RegExp将创建一个正则表达式对象。

var myStr = 'test';
var regEx = RegExp(myStr,'i');
console.log(typeof regEx);//object

因此,当您尝试使用search时方法,您正在使用两侧斜杠的字符串进行搜索,从而得到 -1 .

var s = 'just a test string';
console.log(s.search('/test/'));//-1
console.log(s.search(/test/));//7

当然是字符串 search方法可以使用字符串,在这种情况下,它将搜索该特定的子字符串,在您的情况下该子字符串不存在,因此它返回 -1指数。在您的示例中,斜杠被添加到字符串中,而不是生成预期的正则表达式。

<小时/>

在 JavaScript 中,有两种创建正则表达式对象的方法(不使用代码求值),一种是正则表达式文字,另一种是由 RegExp 创建。构造函数。

正则表达式文字必须在编译时定义,并且不能通过字符串连接构造。

/test/i

要在运行时动态创建正则表达式,您必须使用 RegExp构造函数。

RegExp('test', 'i');

关于javascript - 正则表达式 ("str","i") 和 '/' +"str"+'/i' 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com