gpt4 book ai didi

javascript - 为什么这个 Javascript RegExp 测试不起作用?

转载 作者:行者123 更新时间:2023-11-30 07:01:23 25 4
gpt4 key购买 nike

我正在思考为什么这不起作用:

function hasOnlyWhitelistedCharacters(string)
{
var whitelist = RegExp("\\w");
console.log(whitelist.test(string));
return whitelist.test(string);
}

当我运行这个字符串时:"wwww??????**<><>"

进入这个函数,它返回true。它不应该返回 false 吗?事实上,似乎无论我做什么,它都会返回 true。

这些也不起作用:

var whitelist = RegExp(\w);
var whitelist = /\w/;

最佳答案

/\w/匹配字符串中任意位置的单个标识符字符 ([0-9a-zA-Z_])。要针对整个字符串进行测试,请使用 anchors (“^”和“$”)和repetition (“+”或“*”,取决于您是否要允许空字符串)。尝试 /^\w*$//^\w+$/ , 或者用 /\W/ 测试你不想要的字符串.

function hasOnlyWhitelistedCharacters(string)
{
var whitelist = /^\w*$/;
console.log(whitelist.test(string));
return whitelist.test(string);
}
function hasNoBlacklistedCharacters(string)
{
var blacklist = /\W/;
console.log(blacklist.test(string));
return ! blacklist.test(string);
}

对于更复杂的列入黑名单的字符类,您可以使用 complemented class :

function hasOnlyWhitelistedCharacters(string)
{
// match all characters, which must be in the set
var whitelist = /^[\w\s\u00C0-\uDFFF\uF900-\uFFFF]*$/;
console.log(whitelist.test(string));
return whitelist.test(string);
}

function hasNoBlacklistedCharacters(string)
{
// match one character not in the set
var blacklist = /[^\w\s\u00C0-\uDFFF\uF900-\uFFFF]/;
console.log(blacklist.test(string));
return ! blacklist.test(string);
}

使用正则表达式时要注意字符编码。实际上,在任何上下文中都要注意字符编码。关于编码的假设可能会导致安全漏洞。

关于javascript - 为什么这个 Javascript RegExp 测试不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5074685/

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