2013-04-10 18 views
8

Ich brauche einen regulären Ausdruck für eine Zeichenfolge mit genau einem Buchstaben.Regulärer Ausdruck für nur ein Zeichen

Zum Beispiel sollte es passen:

  • 8*x=16
  • x+2=2
  • u329398239823
  • 43044343k43304403

... aber nicht:

  • xsfdjfefljefe
  • 44434f9434343 f
  • 98(***(*)))(*)(0((-900-87
  • 32233232
+0

Die Frage ist nicht klar, welche Art von Ausdruck willst du? [a-zA-Z] stimmt nicht mit "8 * x = 16" überein – Daniel

+0

@simpleBob Er möchte Ausdrücke mit nur einem Buchstaben, wie es scheint. – Loamhoof

+1

Jetzt bekomme ich es, es sollte genau einen Buchstaben in der ganzen Zeichenfolge geben – Daniel

Antwort

12
/^[^a-z]*([a-z])[^a-z]*$/i 

i für Groß- und Kleinschreibung Matching.

^ und $ Anker, um zu erzwingen, dass die Regex der gesamten Zeichenfolge entspricht.

(), um den Brief zu erfassen.

+0

Nun, gegen welche Zeichenfolge testen Sie es? – Loamhoof

+0

das würde passen bei "44434f9434343 f" – Daniel

+0

Wenn Sie es wollen, verwenden Sie einfach eine einfangende Gruppe. Bearbeitet. – Loamhoof

2

Versuchen mit:

/^[^a-z]*([a-z]{1})[^a-z]*$/gim 

Mittel Zeichenkette beginnen (^), dann ein beliebiges nonalpha Zeichen 0 oder mehrmals ([^a-z]*), dann genau ein Alpha-Zeichen als erstes Spiel gefangen (([a-z]{1}), wird es verfügbar sein für den Ersatz als $1), und dann wieder null oder mehr Nonalpha-Zeichen, dann das Ende der Zeichenfolge ($).

Sehen Sie es in Aktion here.

+0

Darf ich fragen, warum wurde ich abgelehnt? –

Verwandte Themen