2010-07-02 7 views
5

Ich möchte einen regulären Ausdruck für die Validierung des Vornamens schreiben. Der reguläre Ausdruck sollte alle Alphabete (lateinische/französische/deutsche Zeichen usw.) enthalten. Allerdings möchte ich Nummern davon ausschließen und auch - zulassen. Also im Grunde ist es \w (minus) Zahlen (plus) -.Regex in Schienen, um [ w] und "-", aber keine Zahlen zu entsprechen

Bitte helfen.

+0

Versuchen Sie auch http://rubular.com beste Ressource, um Ihre Ruby Regexs zu testen. –

Antwort

5

Soweit ich weiß Ruby nicht Unicode-Eigenschaften nicht unterstützt (zumindest bis Version 1.8), so dass Sie

^(?:[^\W\d_]|-)+$ 

Erklärung verwenden, müssen möglicherweise: [^\W\d_] Matches jeder Buchstabe (wörtlich bedeutet es „Spiel ein Zeichen, das weder ein nicht-alphanumerisches Zeichen, eine Ziffer oder ein Unterstrich ist "). In diesem Fall ist ein doppeltes Negativ das Richtige. Da wir eine negierte Zeichenklasse verwenden, müssen wir die - abwechselnd zulassen.

Caveat: Von regular-expressions.info ihm wie Ruby sieht paßt nur ASCII-Zeichen mit der \w Stenografie, so dass dieser regex möglicherweise nicht wie vorgesehen. Ich habe Ruby hier nicht installiert, aber auf rubular.com funktioniert diese Regex korrekt.

Die alternative Lösung

^[[:alpha:]-]+$ 

sollte es nicht funktioniert Nicht-ASCII-Zeichen nach regular-expressions.info und RegexBuddy, sondern auf rubular.com entsprechen.

+0

Vielleicht ist es nicht Rubin spezifisch? –

+0

@Shripad K: Was meinst du? –

0

Wenn Sie ein Ruby-spezifische Lösung für die Validierung Problem wollen, dann können Sie diese verwenden:

^[\D-]+$ 

können Sie diesen Link hier überprüfen:

http://rubular.com/r/VrAIB4TkwJ

ich dies eine Gemeinschaft gemacht haben Wiki, damit jeder es ausprobieren kann und die Regex bei Bedarf besser.

Hoffe, das hilft. Prost :)

+0

Nicht wirklich. Dies entspricht allem außer Ziffern, einschließlich Strings wie '! '§ $% &' - nicht das, was Dinesh benötigt. –

Verwandte Themen