2014-02-25 18 views
11

Ich bin mit JS animiert Kontaktformular mit dieser Linie der Validierung regex:Regex für Umlaut

rx:{".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'}, other fields... 

ich gerade herausgefunden, dass ich nicht Namen wie „Müller“ eingeben. Die Regex akzeptiert dies nicht. Was muss ich tun, um auch Umlaute zu erlauben?

+0

http://Stackoverflow.com/q/17153545/2563028 – EfrainReyes

+1

Sie könnten '\ w' als 'Wort' verwenden, aber Sie müssen testen, ob das den Umlaut mathematisch – Martijn

+2

In meinem Test, \ w' habe keine Umlaute gefangen. –

Antwort

14

Sie sollten in Ihren Regex-Unicode-Codes für Zeichen wie \u0080 verwenden. Für deutsche Sprache, fand ich folgende Tabelle:

Zeichen  Unicode 
------------------------------ 
Ä, ä  \u00c4, \u00e4 
Ö, ö  \u00d6, \u00f6 
Ü, ü  \u00dc, \u00fc 
ß   \u00df 

(Quelle http://javawiki.sowas.com/doku.php?id=java:unicode)

+12

[Der heilige Gral] (http://unicode-table.com/de). Sie können auch Bereiche schreiben, z. '[\ u00F0- \ u002AF]'. – tenub

10

Versuchen Sie dies mit:

/^[\u00C0-\u017Fa-zA-Z'][\u00C0-\u017Fa-zA-Z-' ]+[\u00C0-\u017Fa-zA-Z']?$/ 

ich die Unicode-Bereich \u00C0-\u017F zu Beginn jedes der hinzugefügten eckige Klammergruppen.

Vorausgesetzt, dass /^[\u00C0-\u017FA-Za-z]+$/.test("aeiouçéüß")true zurückgibt, erwarte ich, dass es funktionieren sollte.

Kredit zu https://stackoverflow.com/a/11550799/940252.

+0

'[\ u00C0- \ u017Fa-zA-Z ']?' $/Ist irgendwie redundant, was versuchst du zu tun? – sln

+0

Ich bin mir nicht sicher, wie ich nicht wirklich heiß auf Regex bin und das OP gab nicht das Muster an, das sie hoffen zu entsprechen. Ich habe gerade mit ihrem ursprünglichen Code gearbeitet. Wenn du es aufräumen kannst, tu es bitte! :) –

+0

Ich würde wagen, diesen Raum in etwas anderes zu ändern, um alle Nicht-Wort-Zeichen wie Bindestriche zu erfassen. Hier ist ein Test: https://regex101.com/r/zH5uV0/4 –