Il problema è quando un utente inserisce aaaaaa
o xyzzz
ecc. Nel campo di input, voglio controllare che l'utente non possa inserire 3 alfabeti simili ripetutamente. ad esempio, aabb è valido, ma aabbb
non dovrebbe essere valido. Voglio farlo usando l'espressione regolare. C'è un modo per farlo ..?Voglio convalidare le parole per i caratteri ripetitivi in un campo di input usando regex
risposta
È possibile utilizzare un backreference (\1
) all'interno di un lookahead negativo ((?!…)
) come questo:
/^(?:(\w)(?!\1\1))+$/
Questo modello corrisponderà qualsiasi stringa composta da caratteri 'Parola' (lettere latine, cifre decimali, o di sottolineatura) ma solo se quella stringa non contiene tre copie consecutive dello stesso carattere.
Per utilizzare l'attributo HTML5 pattern
, che sarebbe:
<input type="text" pattern="^(?:(\w)(?!\1\1))+$">
È inoltre provare questo modello con JavaScript
(\w)\1{2,}
e si può provare su jsfiddle troppo
Il codice JavaScript è come questo:
jQuery(document).ready(
function($)
{
$('#input').on(
'keyup',
function()
{
var $regex = /(\w)\1{2,}/;
var $string = $(this).val();
if($regex.test($string))
{
// Do stuff for repeated characters
}
else
{
// Do stuff for not repeated characters
}
}
);
}
);
Dove $('#input')
seleziona il campo di testo con ID input
. Inoltre con lo {2,}
nel modello regex è possibile controllare la lunghezza se i caratteri ripetuti. Se ad esempio si modificain 4
, il modello corrisponderà a 5 caratteri ripetuti o più.
Bella risposta. !!! –
Bella risposta !! :) –
Funziona .. Grazie .. @ p.s.w.g – Ved