Fondamentalmente ho la seguente validazione sulla mia pagina - è una regola di parola in quanto una descrizione in una casella di testo non può essere maggiore di 3 parole esclusa la parola 'e'. Ho implementato il seguente validazione lato server in C# che sta lavorando beneReplica convalida lato server C# in Javascript
if (Desc.Trim().ToString() != "")
{
MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+");
if (collection.Count > 3)
{
ErrorMsg.Append("Description should contain at most 3 words(excluding 'and').");
ErrorMsg.Append("\\n");
}
}
Tuttavia sto avendo difficoltà a ottenere lo stesso lavoro in Javascript. Ho provato quanto segue ma non funziona fino ad ora, quindi spero che qualcuno con una migliore conoscenza di Javascript possa vedere l'errore. Nota che if fa parte di una funzione di convalida più grande che si attiva sulla pagina - gli avvisi erano lì solo per vedere se è entrato in questo se (cosa che non lo è) - quando questo è rimosso il resto del JS sulla pagina è funziona bene.
if (Desc.val().trim() != "")
{
alert('1');
!regexWordRule.test(Desc.val());
alert('2');
if (Desc.val().match(regexWordRule).length > 3)
{
errorText += "Description should contain at most 3 words(excluding 'and').";
}
valid = false;
}
e il seguente è il mio regexWordRule definito nella parte superiore del file js.
var regexWordRule = /[\S]+/;
questo funziona benissimo - Molte grazie. Per mia comprensione puoi spiegare il \ b nella rimozione e ricerca? –
\ b corrisponde al limite della parola. Qui garantisce che si rimuova solo una parola autonoma "e" e non una sottostringa dalle parole che la contengono (come la banda, il paesaggio, ecc.). Vedi anche la risposta di @ Dima, che suggerisce di guardare alla validazione remota, che vale la pena considerare. –