Regex om alleen letters te matchen

Hoe kan ik een regex schrijven die alleen met letters overeenkomt?


Antwoord 1, autoriteit 100%

Gebruik een tekenset: [a-zA-Z]komt overeen met één letter van A–Z in kleine letters en hoofdletters. [a-zA-Z]+komt overeen met een of meer letters en ^[a-zA-Z]+$komt alleen overeen met tekenreeksen die alleen uit een of meer letters bestaan ( ^en $markeren respectievelijk het begin en einde van een tekenreeks).

Als u andere letters dan A–Z wilt matchen, kunt u deze toevoegen aan de tekenset: [a-zA-ZäöüßÄÖÜ]. Of u gebruikt vooraf gedefinieerde tekenklassen zoals de Unicode-tekeneigenschapklasse \p{L}die de Unicode-tekens beschrijft die letters zijn.


Antwoord 2, autoriteit 49%

\p{L}komt overeen met alles wat een Unicode-letter is als je geïnteresseerd bent in alfabetten die verder gaan dan de Latijnse


Antwoord 3, autoriteit 12%

Afhankelijk van uw betekenis van “karakter”:

[a-zA-Z]– alle letters (hoofdletters en kleine letters)

[^0-9]– alle niet-cijferige tekens


Antwoord 4, autoriteit 7%

De dichtstbijzijnde beschikbare optie is

[\u\l]+

die overeenkomt met een reeks hoofdletters en kleine letters. Het wordt echter niet door alle editors/talen ondersteund, dus het is waarschijnlijk veiliger om

. te gebruiken

[a-zA-Z]+

zoals andere gebruikers suggereren


Antwoord 5, autoriteit 5%

U zou gebruiken

/[a-z]/gi

[]–controleert op tekens tussen gegeven invoer

a-z—dekt het hele alfabet

g—–wereldwijd door de hele reeks

i—–hoofdletters en kleine letters krijgen


Antwoord 6, autoriteit 4%

Java:

String s= "abcdef";
if(s.matches("[a-zA-Z]+")){
     System.out.println("string only contains letters");
}

Antwoord 7, autoriteit 3%

Reguliere uitdrukking die maar weinig mensen hebben geschreven als “/^[a-zA-Z]$/i” is niet correct omdat ze ten slotte /ihebben genoemd, wat voor niet-hoofdlettergevoelige en na het matchen voor de eerste keer zal het terugkeren. Gebruik in plaats van /igewoon /gwat voor globaal is en je hoeft ook geen ^ $in te voeren voor begin en einde.

/[a-zA-Z]+/g
  1. [a-z_]+komt overeen met een enkel teken in de onderstaande lijst
  2. Quantifier: +tussen één en onbeperkte keren, zo vaak mogelijk, teruggeven als nodig is
  3. a-zeen enkel teken in het bereik tussen a en z (hoofdlettergevoelig)
  4. A-Zeen enkel teken in het bereik tussen A en Z (hoofdlettergevoelig)
  5. gmodifier: globaal. Alle wedstrijden (niet terugkeren bij de eerste wedstrijd)

Antwoord 8, autoriteit 3%

/[a-zA-Z]+/

Super simpel voorbeeld. Reguliere expressies zijn zeer gemakkelijk online te vinden.

http://www.regular-expressions.info/reference.html


Antwoord 9, autoriteit 2%

Voor PHP werkt het volgende prima

'/^[a-zA-Z]+$/'

Antwoord 10, autoriteit 2%

Gebruik tekengroepen

\D

Komt overeen met elk teken behalve de cijfers 0-9

^\D+$

Bekijk hier

een voorbeeld


Antwoord 11, autoriteit 2%

Gebruik gewoon \wof [:alpha:]. Het is een ontsnappingsreeks die alleen overeenkomt met symbolen die in woorden kunnen voorkomen.


Antwoord 12

Als u letters in een willekeurige tekencodering bedoelt, is het een goede benadering om niet-letters zoals spaties \s, cijfers \den andere speciale tekens zoals:

[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]

Of gebruik ontkenning van bovenstaande ontkenning om letters direct te beschrijven:

\S \D and [^  ..special chars..]

Pluspunten:

  • Werkt met alle regex-smaken.
  • Gemakkelijk te schrijven, bespaart soms veel tijd.

Nadelen:

  • Lang, soms niet perfect, maar tekencodering kan ook worden verbroken.

Antwoord 13

Je kunt deze reguliere expressie proberen: [^\W\d_]of [a-zA-Z].


Antwoord 14

Dus ik heb veel van de antwoorden gelezen, en de meeste houden geen rekening met uitzonderingen, zoals letters met accenten of trema (á, à, ä, enz.).

Ik heb een functie in typoscript gemaakt die vrijwel extrapoleerbaar zou moeten zijn naar elke taal die RegExp kan gebruiken. Dit is mijn persoonlijke implementatie voor mijn gebruikin TypeScript. Wat ik eigenlijk deed, was reeksen letters toevoegen met elk soort symbool dat ik wilde toevoegen. Ik heb de char ook geconverteerd naar hoofdletters voordat ik de RegExp toepast, wat me wat werk bespaart.

function isLetter(char: string): boolean {
  return char.toUpperCase().match('[A-ZÀ-ÚÄ-Ü]+') !== null;
}

Als je nog een reeks letters met een ander soort accent wilt toevoegen, voeg je dit gewoon toe aan de regex. Hetzelfde geldt voor speciale symbolen.

Ik heb deze functie geïmplementeerd met TDD en ik kan bevestigen dat dit werkt in ten minste de volgende gevallen:

   character | isLetter
    ${'A'}    | ${true}
    ${'e'}    | ${true}
    ${'Á'}    | ${true}
    ${'ü'}    | ${true}
    ${'ù'}    | ${true}
    ${'û'}    | ${true}
    ${'('}    | ${false}
    ${'^'}    | ${false}
    ${"'"}    | ${false}
    ${'`'}    | ${false}
    ${' '}    | ${false}

Antwoord 15

De laatste tijd heb ik dit patroon in mijn formulieren gebruikt om namen van mensen te controleren, die letters, spaties en speciale tekens zoals accenttekens bevatten.

pattern="[A-zÀ-ú\s]+"

Antwoord 16

JavaScript

Als u overeenkomende letters wilt retourneren:

('Example 123').match(/[A-Z]/gi)// Resultaat: [“E”, “x”, “a”, “m”, “p”, “l”, “e”]

Als u overeenkomende letters wilt vervangen door sterren (‘*’), bijvoorbeeld:

('Example 123').replace(/[A-Z]/gi, '*')//Resultaat: ****** 123″ *


Antwoord 17

/^[A-z]+$/.test('asd')
// true
/^[A-z]+$/.test('asd0')
// false
/^[A-z]+$/.test('0asd')
// false

Antwoord 18

patroon = /[a-zA-Z]/

zet “[a-zA-Z]: #{pattern.match(“mine blossom”)}” OK

zet “[a-zA-Z]: #{pattern.match(“456″)}”

zet “[a-zA-Z]: #{pattern.match(“”)}”

zet “[a-zA-Z]: #{pattern.match(“#$%^&*”)}”

zet “[a-zA-Z]: #{pattern.match(“#$%^&*A”)}” OK


Antwoord 19

Pattern pattern = Pattern.compile("^[a-zA-Z]+$");
if (pattern.matcher("a").find()) {
   ...do something ......
}

Other episodes