gpt4 book ai didi

javascript - 如何检查字符串在JavaScript中的任何点是否包含字符

转载 作者:行者123 更新时间:2023-11-28 07:42:47 26 4
gpt4 key购买 nike

我需要知道字符串在字符串的任何点是否包含字符(一次或多次)。例如使用字符“&”:

“&hfds”无效,“%$/&h&”无效等。

我这样做是作为密码验证的一部分:

function applySpecialCharacterFilter(password) {
if (password.match(/([!,%,@,#,$,^,*,?,_,~])/)) {
return 1;
} else if(password.match(/([&])/)) {
throw new Error('Das Passwort enthält unerlaubte Zeichen.');
}
return 0;
}

在第一部分中,它检查密码是否包含任何允许的字符,然后递增验证值。但包含不允许的字符的密码可以通过。如果我试图捕获它,则使用 else ,但只有当它不在像 $%& 这样的特殊字符序列中时它才有效

谢谢

编辑:

这是整个函数:

function checkStrength(password){
var strength = 0;
var passwordMessage = $('#passwordMessage');

if (password.length == 0) {
result.removeClass();
return '';
}

if (password.length < 6) {
validPassword = false;
result.removeClass();
result.addClass('short');
return 'Too short';
} else if(password.length > 8) {
validPassword = false;
result.removeClass();
result.addClass('short');
return 'Too long';
} else {
strength += 1;
}

try {
strength += applyLowerAndUpperCaseFilter(password);
strength += applyNumbersAndCharactersFilter(password);
strength += applySpecialCharacterFilter(password);
strength += applyTwoSpecialCharacterFilter(password);
strength += applyAlphabeticalCharacterCriteria(password);
} catch(error) {
validPassword = false;
result.removeClass();
result.addClass('short');
passwordMessage.html('').append('<p>TPassword contains invalid characters!</p>');
return 'Invalid';
}

passwordMessage.html('');

if (strength <= 2) {
validPassword = false;
result.removeClass();
result.addClass('weak');
return 'Schwach';
} else if (strength <= 3 ) {
validPassword = true;
result.removeClass();
result.addClass('good');
return 'Good';
} else {
validPassword = true;
result.removeClass();
result.addClass('strong');
return 'Strong';
}
}

function applyLowerAndUpperCaseFilter(password) {
if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))
return 1;
return 0;
}

function applyNumbersAndCharactersFilter(password) {
if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))
return 1;
return 0;
}

function applySpecialCharacterFilter(password) {
if (password.match(/^([!%@#$^*?_~]+)$/)) {
return 1;
} else if(password.match(/([&])/)) {
throw new Error('Das Passwort enthält unerlaubte Zeichen.');
}
return 0;
}

function applyTwoSpecialCharacterFilter(password) {
if (password.match(/(.*[!,%,@,#,$,^,*,?,_,~].*[!,",%,@,#,$,^,*,?,_,~])/))
return 1;
else if(password.match(/([&])/))
throw new Error('Das Passwort enthält unerlaubte Zeichen.');
return 0;
}

function applyAlphabeticalCharacterCriteria(password) {
var quality = 0;
var sequences = [
'abcdefghijklmnopqrstuvwxyz',
'01234567890',
'!\"§$%/()=?'
];

var proceed = true;
for(var i=0; i<(password.length-3); i++) {
for(var index = 0; index < sequences.length; index++) {
var needle = password.substring(i, 3);
if(stripos(sequences[index], needle) != false) {
quality -= 1;
proceed = false;
}
if(proceed == false) break;
}
if(proceed == false) break;
}
return quality;
}

function stripos(f_haystack, f_needle, f_offset) {
var haystack = (f_haystack + '')
.toLowerCase();
var needle = (f_needle + '')
.toLowerCase();
var index = 0;

if ((index = haystack.indexOf(needle, f_offset)) !== -1) {
return index;
}
return false;
}

消息和类仅用于实时验证输出。规则:密码长度必须在 6 到 8 个字符之间。
它必须至少有 1 个大写字符和 1 个小写字符。
它必须有数字。
它必须至少有 1 个特殊字符(2 个提供更多值(value))。
仅允许使用这些特殊字符 - _ 。 : , ; ! @§$%/=? #
如果可能的话,字符不应出现在序列中,因此不能有 abc、123、!§$ 等。

最佳答案

您必须锚定第一个正则表达式并添加量词:

if (password.match(/^([!,%,@,#,$,^,*,?,_,~]+)$/)) {
// here ^ ^ ^

逗号不是强制性的,除非您想匹配它:

if (password.match(/^([!%@#$^*?_~]+)$/)) {

关于javascript - 如何检查字符串在JavaScript中的任何点是否包含字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27820724/

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