Ich habe ein Eingabefeld, in das ein Benutzername eingegeben wird, aber wenn ungültige Zeichen eingegeben werden, möchte ich, dass ein Fehler auftritt. Der folgende Code ist das, was ich benutze; Was würde ich in den Abschnitt "etwas" setzen?

    var numbers = new RegExp("SOMETHING");

    $(this).removeClass("active");          

    if(($(this).val() == "") || $(this).val().match(numbers))
    {
        $("#firstNameErrorMsg").html("First name can only contain letters. ");
    }
    else
    {
        $("#firstNameErrorMsg").html("OK");
    }
0
user1725794 7 Okt. 2012 im 02:44

5 Antworten

Beste Antwort

Hier sind einige Muster, die ich vor langer Zeit geschrieben habe:

patt['name'] = /^[a-z ,-]+$/i;
patt['username'] = /^[A-z0-9_-]+$/i;
patt['email'] = /^[a-z0-9]+(?:[\.-]?[a-z0-9]+)*@[a-z0-9]+([-]?[a-z0-9]+)*[\.-]?[a-z0-9]+([-]?[a-z0-9]+)*([\.-]?[a-z]{2,})*(\.[a-z]{2,5})+$/i;
patt['website'] = /^http(s)?:\/\/(www\.)?[a-z0-9]+([-]?[a-z0-9]+)*[\.-]?[a-z0-9]+([-]?[a-z0-9]+)*([\.-]?[a-z]{2,})*(\.[a-z]{2,5})+$/i;
patt['age'] = /^(?:([1][3-9]|[2-9][0-9]))$/i;
patt['subject'] = /[a-z0-9?!:;'&_\. ,-]+/i;

Wenn Sie sie verwenden möchten, sollten Sie diese Bedingung überprüfen:

if(($(this).val() == "") || ! $(this).val().match(patt['name'])){ // in case.
...
}

Wenn Sie jedoch unerwünschte Zeichen überprüfen möchten, ist dies ein langes Muster für die Eingabe von username.

2
Hashem Qolami 6 Okt. 2012 im 22:55

Sushanth ist größtenteils korrekt, aber Sie müssen eine beliebige Anzahl von Buchstaben abgleichen, und es müssen von Anfang bis Ende nur Buchstaben sein, also sollten Sie so etwas tun

var name = new RegExp('^[A-Za-z]+$');
$(this).removeClass('active');

if($(this).val().match(name)) {
    $('#firstNameErrorMsg').html('OK');
} else {
    $('#firstNameErrorMsg').html('First name can only contain letters.');
}
0
Fernando Javier Santamarina Ca 6 Okt. 2012 im 23:11

Versuchen Sie diesen Regex

[A-Za-z]

Dies stimmt nur mit Klein- und Großbuchstaben überein

2
Sushanth -- 6 Okt. 2012 im 22:53

Dies sollte eine vollständige Implementierung dessen sein, was Sie versuchen:

var invalid = /[^A-Za-z]+/;

$(this).removeClass("active");          

if($(this).val() == "" || invalid.test($(this).val()))
{
    $("#firstNameErrorMsg").html("First name can only contain letters. ");
}
else
{
    $("#firstNameErrorMsg").html("OK");
}
0
smitelli 6 Okt. 2012 im 23:09

Schlagen Sie vor, dass Sie etwas über Regexes und experimentiere mit ihnen.

Um einfach Briefe und nichts anderes zu erhalten, tun Sie einfach:

^[a-zA-Z]+$

Dadurch können zwischen Start und Ende 1..n Klein- und Großbuchstaben gefunden werden, sonst nichts. Die Version von Sushanth stimmt mit Teilteilen der Eingabe überein, sodass der Benutzer Leerzeichen, Zahlen usw. an anderer Stelle verwenden kann, solange ein Teil der Eingabe ein Wort enthält.

0
t0mppa 6 Okt. 2012 im 23:03