Zasadniczo mam następującą walidację na mojej stronie - jest to reguła słowa, w której opis w polu tekstowym nie może być większy niż 3 wyrazy z wyłączeniem słowa "i". I wprowadziły następujące poprawności po stronie serwera w C#, który działa poprawnieReplikacja C# Server Side Validation w 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");
}
}
Jednak mam trudności z taką samą pracę w JavaScript. Próbowałem, ale nie działa tak daleko, więc nadzieję, że ktoś, kto ma lepszą znajomość JavaScript może zobaczyć błąd. Zauważ, że jeśli jest częścią większej funkcji sprawdzania poprawności, która uruchamia się na stronie - alerty były właśnie po to, aby zobaczyć, czy się do tego dostarczy, jeśli (co robi) - gdy ten blok zostanie usunięty, reszta JS na stronie jest Dobrze pracować.
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;
}
Poniżej znajduje się moja reguła regexWordRule zdefiniowana na samym szczycie pliku js.
var regexWordRule = /[\S]+/;
to działa świetnie - Wielkie dzięki. Dla mojego zrozumienia możesz wyjaśnić \ b w usunięciu i wyszukiwaniu? –
\ b dopasowuje granicę słowa. Zapewnia to, że usuwasz tylko oddzielne słowo "i", a nie podciąg z zawartych w nim słów (jak zespół, pejzaż itp.). Zobacz także odpowiedź @ Dimy, która sugeruje spojrzenie na zdalną walidację, która jest warta rozważenia. –