816 Stimmen

Regulärer Ausdruck für alphanumerische Zeichen und Unterstriche

Ich möchte einen regulären Ausdruck haben, der prüft, ob eine Zeichenfolge nur Groß- und Kleinbuchstaben, Zahlen und Unterstriche enthält.

25voto

Drew Hall Punkte 27579

Wie wäre es damit:

^([A-Za-z]|[0-9]|_)+$

...wenn Sie explizit sein wollen, oder:

^\w+$

...wenn Sie eine prägnante (Perl-Syntax) bevorzugen.

22voto

Danuel O'Neal Punkte 306

In der Informatik bedeutet ein alphanumerischer Wert oft, dass das erste Zeichen keine Zahl, sondern ein Alphabet oder ein Unterstrich ist. Danach kann das Zeichen sein 0-9 , A-Z , a-z oder Unterstrich ( _ ).

So können Sie das tun:

Getestet unter php:

$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'

oder nehmen Sie dies

^[A-Za-z_][A-Za-z\d_]*$

und platzieren Sie es in Ihrer Entwicklungssprache.

15voto

boooloooo Punkte 159

Verwenden Sie Lookaheads, um die "mindestens eine" Sache zu erledigen. Glaub mir, das ist viel einfacher.

Hier ein Beispiel, für das 1-10 Zeichen erforderlich wären, die mindestens eine Ziffer und einen Buchstaben enthalten:

^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$

ANMERKUNG: könnte verwendet werden \w aber dann kommen ECMA/Unicode-Überlegungen ins Spiel, die den Zeichenumfang der \w "Wortzeichen".

13voto

MiKr13 Punkte 1031

Das funktioniert bei mir, ich habe es im O'Reilly-Buch "Mastering Regular Expressions" gefunden:

/^\w+$/

Erläuterung:

  • ^ bestätigt die Position am Anfang der Zeichenkette
    • \w + entspricht einem beliebigen Wortzeichen (gleich [a-zA-Z0-9_])
    • "+"-Quantifizierer - Entspricht zwischen einem und einer unbegrenzten Anzahl von Übereinstimmungen, so oft wie möglich, und gibt so viel wie nötig zurück (gierig)
  • $ bestätigt die Position am Ende der Zeichenkette

Überprüfen Sie sich selbst:

const regex = /^\w+$/;
const str = `nut_cracker_12`;
let m;

if ((m = regex.exec(str)) !== null) {
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

10voto

Shantanu Punkte 101

Probieren Sie diese mehrsprachigen Erweiterungen aus, die ich für String erstellt habe.

IsAlphaNumeric - String muss mindestens 1 Alpha (Buchstabe im Unicode-Bereich, angegeben in charSet) und mindestens 1 Zahl (angegeben in numSet) enthalten. Außerdem sollte die Zeichenfolge nur aus Buchstaben und Zahlen bestehen.

IsAlpha - Die Zeichenkette muss mindestens 1 Alpha enthalten (in der angegebenen Sprache charSet) und darf nur aus Alpha bestehen.

IsNumeric - Die Zeichenfolge muss mindestens 1 Zahl enthalten (in der angegebenen Sprache numSet) und darf nur aus Zahlen bestehen.

Der charSet/numSet-Bereich für die gewünschte Sprache kann angegeben werden. Die Unicode-Bereiche sind unter dem folgenden Link verfügbar:

http://www.ssec.wisc.edu/~tomw/java/unicode.html

API :

    public static bool IsAlphaNumeric(this string stringToTest)
    {
        //English
        const string charSet = "a-zA-Z";
        const string numSet = @"0-9";

        //Greek
        //const string charSet = @"\u0388-\u03EF";            
        //const string numSet = @"0-9";

        //Bengali
        //const string charSet = @"\u0985-\u09E3";
        //const string numSet = @"\u09E6-\u09EF";

        //Hindi
        //const string charSet = @"\u0905-\u0963";
        //const string numSet = @"\u0966-\u096F";

        return Regex.Match(stringToTest, @"^(?=[" + numSet + @"]*?[" + charSet + @"]+)(?=[" + charSet + @"]*?[" + numSet + @"]+)[" + charSet + numSet +@"]+$").Success;
    }

    public static bool IsNumeric(this string stringToTest)
    {
        //English
        const string numSet = @"0-9";

        //Hindi
        //const string numSet = @"\u0966-\u096F";

        return Regex.Match(stringToTest, @"^[" + numSet + @"]+$").Success;
    }

    public static bool IsAlpha(this string stringToTest)
    {
        //English
        const string charSet = "a-zA-Z";

        return Regex.Match(stringToTest, @"^[" + charSet + @"]+$").Success;
    }

Verwendung:

        //English
        string test = "AASD121asf";

        //Greek
        //string test = "123";

        //Bengali
        //string test = "";

        //Hindi
        //string test = @"";

        bool isAlphaNum = test.IsAlphaNumeric();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X