繁体   English   中英

javascript 如何使 split() 不区分大小写

[英]javascript how to make a split() case insensitive

我想在Redred上拆分如何使拆分不区分大小写?

const str = "my Red balloon"
const searchTxt = "red"
const strArr = str.split(searchTxt);

我试过的变体

const strArr = str.split(/searchTxt/gi);

使用带有所需标志的RegExp构造函数作为第二个参数

RegExp(expression, flags)

重要提示:当将任意字符串(如来自用户输入)传递给 RegExp 构造函数时 - 始终确保转义 RegExp 特殊字符RegExp可能会混淆为正则表达式标记,例如. 任何字符 ? 一个或多个等,等等。请参阅下面的两个链接演示。

 const str = "my Red balloon" const searchTxt = "red" const regEscape = v => v.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); const strArr = str.split(new RegExp(regEscape(searchTxt), "ig")); console.log(strArr)

为了在正则表达式中使用变量,您需要使用 RegExp 构造函数。 无需使用g标志,因为split将始终查找所有出现:

 const str = "my Red balloon" const searchTxt = "red" const strArr = str.split( new RegExp(searchTxt, 'i') ); console.log(strArr);

您需要像这样使用RegExp()

const str = "my Red balloon"
const searchTxt = "red"
const rgx = RegExp(searchTxt, "gi");
const strArr = str.split(searchTxt);

这是因为您不能简单地使用/searchTxt/gi方法,因为它会将其作为字符串读取(因此它将在匹配“searchTxt”的地方被拆分,作为字符串而不是变量)。

这是正确的方法

const str = "my Red balloon";
var arr = str.split(/red/i);

暂无
暂无

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

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