javascript如何使split()不区分大小写
我想在javascript如何使split()不区分大小写,javascript,Javascript,我想在Red和Red上拆分如何使拆分不区分大小写 const str = "my Red balloon" const searchTxt = "red" const strArr = str.split(searchTxt); 我试过各种各样的 const strArr = str.split(/searchTxt/gi); 为了在正则表达式中使用变量,需要使用RegExp构造函数。无需使用g标志,因为split将始终查找所有事件: const s
Red
和Red
上拆分如何使拆分不区分大小写
const str = "my Red balloon"
const searchTxt = "red"
const strArr = str.split(searchTxt);
我试过各种各样的
const strArr = str.split(/searchTxt/gi);
为了在正则表达式中使用变量,需要使用RegExp构造函数。无需使用
g
标志,因为split
将始终查找所有事件:
const str=“我的红气球”
const searchTxt=“红色”
const strArr=str.split(新的RegExp(searchTxt,'i');
控制台日志(strArr)代码>要在正则表达式中使用变量,需要使用RegExp构造函数。无需使用g
标志,因为split
将始终查找所有事件:
const str=“我的红气球”
const searchTxt=“红色”
const strArr=str.split(新的RegExp(searchTxt,'i');
控制台日志(strArr)代码>使用带有所需标志的构造函数作为第二个参数
RegExp(表达式、标志)
重要提示:向RegExp构造函数传递任意字符串(如用户输入)时,请始终确保
转义RegExp特殊字符RegExp
可能会混淆为正则表达式标记,例如
(任何字符)?
(一个或多个)等。请参阅下面的两个链接演示
const str=“我的红气球”
const searchTxt=“红色”
const regEscape=v=>v.replace(/[-[\]{}()*+?,\\^$\\\\s]/g,'\\$&');
const strArr=str.split(新的RegExp(regEscape(searchTxt),“ig”);
console.log(strArr)
使用带有所需标志的构造函数作为第二个参数
RegExp(表达式、标志)
重要提示:向RegExp构造函数传递任意字符串(如用户输入)时,请始终确保
转义RegExp特殊字符RegExp
可能会混淆为正则表达式标记,例如
(任何字符)?
(一个或多个)等。请参阅下面的两个链接演示
const str=“我的红气球”
const searchTxt=“红色”
const regEscape=v=>v.replace(/[-[\]{}()*+?,\\^$\\\\s]/g,'\\$&');
const strArr=str.split(新的RegExp(regEscape(searchTxt),“ig”);
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”匹配的位置被拆分为字符串,而不是变量)。您需要像这样使用RegExp()
:
const str = "my Red balloon"
const searchTxt = "red"
const rgx = RegExp(searchTxt, "gi");
const strArr = str.split(searchTxt);
这是因为您不能简单地使用/searchTxt/gi
方法,因为它将以字符串的形式读取它(因此它将在与“searchTxt”匹配的位置作为字符串而不是变量进行拆分).转义特殊字符有什么好处?@Bill如果搜索字符串为:ed?
则?
将被视为?
正则表达式零或一个字符,而不是问号-因此,您始终需要将来自用户输入的字符转义到RegExp
构造函数中。@Bill您可以使用String.raw\d\d
来避免使用“\\d\\d”。@Bill请参阅此JSFIDLE示例以了解发生了什么,即您没有转义特殊的RegExp字符:-输出非常清楚不是你想要的。在这里,它是固定的:并返回预期的拆分。转义特殊字符有什么好处?@Bill如果搜索字符串为:ed?
则?
将被视为?
正则表达式零或一个字符,而不是问号-因此,您始终需要将来自用户输入的字符转义到RegExp
构造函数中。@Bill您可以使用String.raw\d\d
来避免使用“\\d\\d”。@Bill请参阅此JSFIDLE示例以了解发生了什么,即您没有转义特殊的RegExp字符:-输出非常清楚不是你想要的。在上面的例子中,searchText
是小写的,但是我不能使str
小写在上面的例子中,searchText
是小写的,但是我不能使str
小写