2009-07-04 5 views
6

Ich brauche eine Regex, die auch Chinesisch, Griechisch, Russisch, ... Buchstaben entspricht. Was ich im Grunde tun möchte, ist Satzzeichen und Zahlen zu entfernen.RegEx für alle Buchstaben (einschließlich Chinesisch, Griechisch, etc.)

Bis jetzt entfernte ich Interpunktion und Zahlen "manuell", aber das scheint nicht sehr konsistent zu sein.

Eine andere Sache, die ich versucht habe, ist

/[\p{L}]/ 

aber das von Mozilla nicht (ich in einer Firefox-Erweiterung verwenden diese) unterstützt.

+0

Müssen Sie Buchstaben nur passen nach der Sprache des jeweiligen Benutzer (was nur bedeutet, dass Sie eine locale bewusst Regex-Engine benötigen) oder müssen Sie etwas übereinstimmen, die einen Brief, in jeder möglichen Sprache ist? – balpha

+2

Und welche Interpunktion müssen Sie entfernen? Müssen Sie das Apostroph in O'Brien entfernen? –

+0

'[\ p {P} \ p {N}]' beschreibt Interpunktion und Zahlen. – Gumbo

Antwort

4

Hast du XRegExp und die Unicode plugin einen Versuch gegeben?

<script src="xregexp.js"></script> 
<script src="xregexp-unicode.js"></script> 
<script> 
    var unicodeWord = XRegExp("^\\p{L}+$"); 
    alert(unicodeWord.test("Ниндзя")); // -> true 
</script> 
+1

Danke, genau das habe ich gesucht. Allerdings möchte ich nicht wirklich eine 8kb-Bibliothek hinzufügen, die ich nur einmal in meiner Erweiterung verwende. Die Unicode-Bereiche im Unicode-Plugin sind sehr hilfreich und ich denke, ich werde diese verwenden, um selbst etwas zu schreiben. – slosd

1

Sie können eine Menge Beschwerden über die aktuellen ECMA-Spezifikationen zu regulären Ausdrücken finden, die sich nicht mit Unicode-Zeichen so verhalten, wie sie sollten. Z.B. eine blog entry by Scott Hanselman, die zurück zu einer SO Frage verbindet ;-)
Es gibt keine "echte" Lösung für dieses Problem noch, aber werfen Sie einen Blick auf die Antworten von Javascript + Unicode regexes (Ihre Frage ist mehr oder weniger ein Duplikat von diesem) (edit: I nimm das zurück, das unicode plugin Jonathan Lonowski schlägt vor, ziemlich nett zu sein)