gpt4 book ai didi

javascript - 检查变量是否包含数组中的任何字符

转载 作者:行者123 更新时间:2023-11-30 17:57:42 25 4
gpt4 key购买 nike

我有以下 JavaScript,禁止以特定 名称命名文件,并禁止某些字符出现在名称中任何地方:

var file = 'somefile';
var contain = ['"', '*', ':', '<', '>', '?', '\\', '/', '|', '+', '[', ']'];
var fullname = ['AUX', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7',
'COM8', 'COM9', 'CON', 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7',
'LPT8', 'LPT9', 'NUL', 'PRN'];

if(fullname.indexOf(file.toUpperCase()) >= 0)
{
alert('Your file must not be named any of these words:\n\n' +
fullname.join(' '));
return;
}

if(/* file contains any chars in contain[] */)
{
alert('Your file name must not contain any of these characters:\n\n' +
contain.join(' '));
return;
}

我想知道如何检查 file 是否包含 contain 数组中的任何项目。

我可以使用 for 循环,如下所示:

for(var i = 0; i < contain.length; i++)
if(file.indexOf(contain[i]) >= 0)
...

但是为此使用循环似乎是“错误的”。

是否有任何内置函数可以使用 vanilla JavaScript 执行此操作?

最佳答案

如果您正在使用 .indexOf(),那么循环是唯一的方法。

但是,您也可以使用正则表达式:

var contain = /["*:<>?\\/|+\[\]]/;
var fullname = /^(AUX|COM1|...)$/i; // NB: "i" flag for case insensitive

if (contain.test(file)) {
...
}

if (fullname.test(file)) {
...
}

这应该非常有效,因为正则表达式将在 JS 解释器中以 native 代码处理。

关于javascript - 检查变量是否包含数组中的任何字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781637/

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