JavaScript regulärer Ausdruck - zwei [a-z] gefolgt von drei [0-9] nur
Habe ich einen einfachen regulären Ausdruck:
[A-z]{2}[0-9]{3})$/g
innerhalb der folgenden:
regForm.submit(function(){
if ($.trim($('#new-usr').val()).match(/([A-z]{2}[0-9]{3})$/g)) {
alert('No');
return false;
}
});
Diese richtig zu Lesen, dass so etwas wie 'ab123'
gibt eine Warnung und 'ab1234'
nicht. Allerdings 'abc123'
ist noch immer werfen die Warnung. Ich brauche es es ist also nur werfen die Warnung, wenn es nur 2 Buchstaben gefolgt von drei zahlen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
/^[A-z]{2}[0-9]{3}$/g
statt.Müssen Sie angeben, dass der ganze string muss abgeglichen werden. Ansonsten bekommst du den markierten Teil gefunden: einebc123.
(Ich weggelassen
()
's, weil Sie nicht wirklich brauchen, die Gruppe.)BTW, sind Sie sicher, dass Sie wollen
[A-z]
und nicht nur[A-Za-z]
?Die Charakter-Klasse
[A-z]
ist wahrscheinlich nicht das, was Sie brauchen.Warum?
Die Charakter-Klasse
[A-z]
passt einigen nicht-alphabetische Zeichen wie[
,]
unter anderem.JS fiddle link , dies zu beweisen.
Dieses tutorial W3school empfiehlt es falsch.
Wenn Sie nur Kleinbuchstaben verwenden
[a-z]
Wenn Sie nur Großbuchstaben verwenden
[A-Z]
Wenn Sie verwenden:
[a-zA-Z]
Wenn Sie möchten, eine Zeichenfolge suchen, wenn es hat 2 Buchstaben gefolgt von 3 Ziffern überall in der Zeichenfolge, entfernen Sie einfach das Ende Anker
$
von Ihrem Muster:Wenn Sie möchten, eine Zeichenfolge suchen, wenn es hat 2 Buchstaben gefolgt von 3 Ziffern und nichts anderes verwenden sowohl start-als Anker
^
- und Ende-Anker$
alsAlternativ können Sie Folgendes verwenden:
wenn Ihr string mehrere Wörter enthält, und Sie versuchen, mit einem Wort.