ich einen regulären Ausdruck benötigen, die nicht mehr als 3 aufeinanderfolgende Zeichen gleichen TypsRegEx Zeichen von gleichem Typ entspricht
ABC - valid
@@@ - valid
123 - valid
ABCD - not valid
[email protected]# - valid
ich einen regulären Ausdruck benötigen, die nicht mehr als 3 aufeinanderfolgende Zeichen gleichen TypsRegEx Zeichen von gleichem Typ entspricht
ABC - valid
@@@ - valid
123 - valid
ABCD - not valid
[email protected]# - valid
Verwenden
if (!/[a-z]{4}|\d{4}|[^a-z\d]{4}/i.test(s)) { console.log("valid"); }
Siehe regex demo
Die /[a-z]{4}|\d{4}|[^a-z\d]{4}/i
enthält Regex passt auf fallunempfindliche Weise (aufgrund /i
) 4 aufeinanderfolgende ASCII-Buchstaben ([a-z]{4}
) oder 4 aufeinander folgenden Ziffern (\d{4}
) oder 4 Zeichen außer ASCII-Buchstaben und -Ziffern ().
Die Überprüfung !/regex/.test()
gibt immer false zurück, wenn die Übereinstimmung gefunden wird.
var strs = ['ABC','@@@','123','[email protected]#','ABCD'];
var rx = /[a-z]{4}|\d{4}|[^a-z\d]{4}/i;
for (var s of strs) {
if (!rx.test(s)) {
console.log(s, ": valid");
} else {
console.log(s, ": invalid");
}
}
nette Antwort, aber der Link zur RegEx Demo zeigen eine andere RegEx –
Ja, ich schrieb eine kompliziertere Lösung, wenn ich dachte, es sollte simplifiziert werden. –
Sie könnten die Zeichenfolge aufgeteilt basierend auf Typen, dann überprüfen Sie die Länge weniger als 3 ist, ich glaube nicht, das mit nur RegExp möglich ist.
const tests = [
'ABC',
'@@@',
'123',
'ABCD',
'[email protected]#'
]
function validate(string){
return string.split(/([A-Z]+|[0-9]+|@+|\W+)/)
.every(str => str.length <= 3)
}
console.log(
tests.map(validate)
)
Bitte zeigen Sie uns, was Sie bisher getan haben. –
Wie definieren Sie ** gleichen Typ **? –
Alphabete, Zahlen und Sonderzeichen - sind einzelne Typen – ChandrasekarG