Reguliere expressie voor alfanumeriek en onderstrepingstekens

Ik zou graag een reguliere expressie willen hebben die controleert of een tekenreeks alleen hoofdletters en kleine letters, cijfers en onderstrepingstekens bevat.


Antwoord 1, autoriteit 100%

Als u een tekenreeks wilt zoeken die alleendie tekens bevat (of een lege tekenreeks), probeert u

"^[a-zA-Z0-9_]*$"

Dit werkt voor .NET reguliere expressies, en waarschijnlijk ook voor veel andere talen.

Het opsplitsen:

^ : start of string
[ : beginning of character group
a-z : any lowercase letter
A-Z : any uppercase letter
0-9 : any digit
_ : underscore
] : end of character group
* : zero or more of the given characters
$ : end of string

Als je geen lege strings wilt toestaan, gebruik dan + in plaats van *.


Zoals anderen al hebben opgemerkt, hebben sommige regex-talen een verkorte vorm voor [a-zA-Z0-9_]. In de .NET regex-taal kunt u ECMAScript-gedrag inschakelen en \wals afkorting gebruiken (waardoor ^\w*$of ^\w+$). Merk op dat in andere talen, en standaard in .NET, \wiets breder is, en ook zal overeenkomen met andere soorten Unicode-tekens (met dank aan Jan voor het erop wijzen). Dus als je echt van plan bent om alleendie tekens te matchen, is het waarschijnlijk het beste om de expliciete (langere) vorm te gebruiken.


Antwoord 2, autoriteit 37%

Er is hier veel breedsprakigheid, en ik ben er diep tegen, dus mijn afdoende antwoord zou zijn:

/^\w+$/

\wis gelijk aan [A-Za-z0-9_], wat vrijwel is wat u wilt. (Tenzij we Unicode introduceren aan de mix)

Gebruik van de +kwantificator die u een of meer tekens koppelt. Als u ook een lege reeks wilt accepteren, gebruikt u in plaats daarvan *.


3, Autoriteit 4%

U wilt controleren of elk teken overeenkomt met uw vereisten, daarom gebruiken we:

[A-Za-z0-9_]

En u kunt zelfs de SHORTHAND-versie gebruiken:

\w

die gelijk is (in sommige regex smaken, dus zorg ervoor dat u controleert voordat u het gebruikt). Om aan te geven dat de hele reeks moet overeenkomen, gebruikt u:

^

Om aan te geven dat de tekenreeks met dat teken begint, gebruikt u dan

$

Om aan te geven dat de reeks eindigt met dat teken. Gebruik vervolgens

\w+ or \w*

Om “1 of meer” of “0 of meer” aan te geven. Alles bij elkaar plaatsen, hebben we:

^\w*$

4, Autoriteit 3%

Um … Vraag: Moet het minstens één karakter of nee hebben? Kan het een lege tekenreeks zijn?

^[A-Za-z0-9_]+$

zal ten minste één alfanumeriek of onderstreping van de bovenste of kleine letters doen. Als het geen lengte kan zijn, vervangt u gewoon de + voor *

^[A-Za-z0-9_]*$

EDIT:

Als diabritici moeten worden opgenomen (zoals Cedilla – Ç), moet u het woordkarakter gebruiken dat hetzelfde doet als het bovenstaande, maar bevat de diakritische tekens:

^\w+$

of

^\w*$

5, Autoriteit 2%

In computerwetenschappen betekent een alfanumerieke waarde vaak dat het eerste teken geen getal is, maar een alfabet of onderstrepingsteken. Daarna kan het teken 0-9, A-Z, A-Zof onderstrepingsteken (_) zijn.

Zo zou je dat doen:

Getest onder php:

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

of neem dit

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

en plaats het in uw ontwikkeltaal.


Antwoord 6, autoriteit 2%

Wat dacht je van:

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

…als je expliciet wilt zijn, of:

^\w+$

…als je de voorkeur geeft aan beknopt (Perl-syntaxis).


Antwoord 7

gebruik vooruitziende blikken om de “ten minste één” dingen te doen. Geloof me, het is veel gemakkelijker.

Hier is een voorbeeld waarvoor 1-10 tekens nodig zijn, met ten minste één cijfer en één letter:

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

OPMERKING: had \w kunnen gebruiken, maar dan spelen ECMA/Unicode-overwegingen een rol bij het vergroten van de karakterdekking van het \w “woordteken”.


Antwoord 8

Probeer deze meertalige extensies die ik voor string heb gemaakt.

IsAlphaNumeric – String moet ten minste 1 alfa (letter in Unicode-bereik, opgegeven in charSet) en ten minste 1 cijfer (opgegeven in numSet) bevatten. De string mag ook alleen uit alfa en cijfers bestaan.

IsAlpha – String moet ten minste 1 alfa bevatten (in de taal die charSet is opgegeven) en alleen uit alfa bestaan.

IsNumeric – String moet ten minste 1 cijfer bevatten (in de taal die numSet is opgegeven) en alleen uit cijfers bestaan.

Het charSet/numSet-bereik voor de gewenste taal kan worden opgegeven. De Unicode-reeksen zijn beschikbaar via onderstaande link:

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;
    }

Gebruik:

       //English
        string test = "AASD121asf";
        //Greek
        //string test = "Ϡϛβ123";
        //Bengali
        //string test = "শর৩৮";
        //Hindi
        //string test = @"क़लम३७ख़";
        bool isAlphaNum = test.IsAlphaNumeric();

9

Dit werkt voor mij, vond dit in de “Mastering Regular Expressions” van de O’Reilly:

/^\w+$/

Uitleg:

  • ^ beweert positie bij het begin van de string
    • \ W + komt overeen met elk woordkarakter (gelijk aan [A-ZA-Z0-9 _])
    • “+” kwantificator – komt overeen met één en onbeperkte tijden, zo vaak mogelijk, teruggeven indien nodig (hebberig)
  • $ beweert positie aan het einde van de string

Controleer jezelf:

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}`);
    });
}

10

De volgende regex komt overeen met alfanumerieke tekens en onderstrepingsteken:

^[A-Za-z0-9_]+$

Bijvoorbeeld in PERL:

#!/usr/bin/perl -w
my $arg1 = $ARGV[0];
# check that the string contains *only* one or more alphanumeric chars or underscores
if ($arg1 !~ /^[a-zA-Z0-9_]+$/) {
  print "Failed.\n";
} else {
    print "Success.\n";
}

11

Dit zou in de meeste gevallen moeten werken.

/^[\d]*[a-z_][a-z\d_]*$/gi

En met de meeste bedoel ik,

abcd       True
abcd12     True
ab12cd     True
12abcd     True
1234       False

Uitleg

  1. ^ ... $– zoek het patroon dat begint en eindigt met
  2. [\d]*– match nul of meer cijfers
  3. [a-z_]– zoek een alfabet of onderstrepingsteken
  4. [a-z\d_]*– zoek een alfabet, cijfer of onderstrepingsteken
  5. /gi– zoek globaal over de tekenreeks heen en is niet hoofdlettergevoelig

Antwoord 12

Voor mij was er een probleem dat ik onderscheid wilde maken tussen alfa-, numeriek en alfanumeriek, dus om ervoor te zorgen dat een alfanumerieke tekenreeks ten minste één alfa en ten minste één numeriek bevat, gebruikte ik:

^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$

Antwoord 13

Voor degenen onder u die op zoek zijn naar alfanumerieke unicode-overeenkomsten, wilt u misschien iets doen als:

^[\p{L} \p{Nd}_]+$

Meer lezen op
http://unicode.org/reports/tr18/
en bij
http://www.regular-expressions.info/unicode.html


Antwoord 14

Ik geloof dat je geen Latijnse en Unicode-tekens gebruikt in je matches.
Als u bijvoorbeeld tekens “ã” of “ü” moet gebruiken, werkt het gebruik van “\w” niet.

U kunt ook deze benadering gebruiken:

^[A-ZÀ-Ýa-zà-ý0-9_]+$

Hopelijk helpt het!


Antwoord 15

Hier is de regex voor wat je wilt met een quantifier om ten minste 1 teken en niet meer dan 255 tekens op te geven

[^a-zA-Z0-9 _]{1,255}

Antwoord 16

Voor Java,
Alleen hoofdletterongevoelig alfanumeriek en onderstrepingsteken zijn toegestaan.

  • ^ Komt overeen met de tekenreeks die begint met een willekeurig teken
  • [a-zA-Z0-9]+ Komt overeen met alfanumerieke tekens en onderstrepingsteken.
  • $ Komt overeen met de tekenreeks die eindigt met nul of meer tekens.
public class RegExTest {
    public static void main(String[] args) {
        System.out.println("_C#".matches("^[a-zA-Z0-9_]+$"));
    }
}

Antwoord 17

Probeer om de hele tekenreeks te controleren en geen lege tekenreeksen toe te staan

^[A-Za-z0-9_]+$

Antwoord 18

^\w*$werkt voor onderstaande combinaties

1
123
1av
pRo
av1

Antwoord 19

Vereist formaat
Sta deze 3 toe:

  1. 0142171547295
  2. 014-2171547295
  3. 123abc

Sta geen andere indelingen toe:

validatePnrAndTicketNumber(){
    let alphaNumericRegex=/^[a-zA-Z0-9]*$/;
    let numericRegex=/^[0-9]*$/;
    let numericdashRegex=/^(([1-9]{3})\-?([0-9]{10}))$/;
   this.currBookingRefValue = this.requestForm.controls["bookingReference"].value;
   if(this.currBookingRefValue.length == 14 && this.currBookingRefValue.match(numericdashRegex)){
     this.requestForm.controls["bookingReference"].setErrors({'pattern': false});
   }else if(this.currBookingRefValue.length ==6 && this.currBookingRefValue.match(alphaNumericRegex)){
    this.requestForm.controls["bookingReference"].setErrors({'pattern': false});
   }else if(this.currBookingRefValue.length ==13 && this.currBookingRefValue.match(numericRegex) ){
    this.requestForm.controls["bookingReference"].setErrors({'pattern': false});
   }else{
    this.requestForm.controls["bookingReference"].setErrors({'pattern': true});
   }
}
<input name="booking_reference" type="text" [class.input-not-empty]="bookingRef.value"
    class="glyph-input form-control floating-label-input" id="bookings_bookingReference"
    value="" maxlength="14" aria-required="true" role="textbox" #bookingRef
    formControlName="bookingReference" (focus)="resetMessageField()" (blur)="validatePnrAndTicketNumber()"/>

20

Dit werkt voor mij, u kunt

proberen

[\\p{Alnum}_]

Other episodes