2012-11-03 23 views
6

Dize içindeki tüm sözcük olmayan karakterleri değiştirmek için biraz yardıma ihtiyacım var. Bir örnek (stadtbezirkspräsident' olarak Tüm kelime olmayan karakterleri değiştir:? * + #

stadtbezirkspräsident haline gelmelidir.

Bu Regex, tüm diller için çalışmalıdır, bu yüzden biraz zorlayıcıdır, çünkü ñ veya œ gibi karakterlerle nasıl eşleşeceğine dair hiçbir fikrim yoktur. Ben

string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' '); 

ile bu çözümü denedim ama ther Ø sola gibi birçok özel karakter halen devam etmektedir.

Belki genel Seçici bunun için vardır, ya da herkes önce bu sorunu çözmüştür?

+0

Ø çeşitli dillerde bir mektuptur (örneğin, Danca) :) –

+0

Benzer: [this] (http://stackoverflow.com/questions/2392194/how-to-match-the-international-alphabet-english -az-olmayan-in-a-regülasyon) soru. javascript regex'in yerel unicode uyumlu eşleştiricileri yok –

cevap

6

kullanmaya çalışın. Steven Levithan en XRexExp package with Unicode add-ons kullanmak ve Unicode özellik kısayolları kullanmak daha mantıklı olabilir

:

var regex = new XRegExp("\\P{L}+", "g") 
string = XRegExp.replace(string, regex, "") 
+1

@ Ωmega: Düzenleme için teşekkürler! –

+1

thx !!!! : D XRegExp gerçekten harika! –

6

Unicode Kendini aralıkları tüm çok iş olacak tanımlamak varsa kandırmasına

str.replace(/(?!\w)[\x00-\xC0]/g, '') 
+1

'\ w' yerel olarak bilinmeyen veya Unicode uyumlu değil. –

+0

@TimPietzcker - Biliyorum, ama benim çözüm düşük altıgen aralığı sadece –

+1

(Evet, benim yorum yazmak üzereyken düzenlemek değil mi?) Özel charactrers kaldırır - Tamam, ama yeterince karakterler hala var olduğunu olmaz Bunu yakalayın (8 bit ANSI kümesinde bile: '×' ve '÷' akla gelir). –

1

Bunlar Tim Pietzcker cevabı daha fazla bir yorum olduğunu, ancak yorumlarda kodunu göstermek garip ... İşte XRexExp paketini kullanarak basit bir örnek: üretim kullanımı için

<p id=orig>Bundespräsident/ß+ð/ə¿α!</p> 
<p id=new></p> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js"> 
</script> 
<script src="http://xregexp.com/addons/unicode/unicode-base.js"> 
</script> 
<script> 
var regex = new XRegExp("\\P{L}+", "g"); 
var string = document.getElementById('orig').innerHTML; 
string = XRegExp.replace(string, regex, ""); 
document.getElementById('new').innerHTML = string; 
</script> 

, muhtemelen baz paketine ve Unicode eklentinin bazı sürümlerini indirmek ve sunucu üzerinde bunları kullanmak isteyeyim.

Not: Unicode harflerin (alfabetik) olarak sınıflandırılan olmayan karakterler için kod denetler. Doğal bir dilde sözcüklerin tire, kesme işareti ve diğer harf içermeyebilse de, bunun “kelime karakteri” ile ne demek istediğine karşılık geldiğini varsayalım.

karakter Unicode eklenir sakının ve bir karakter olabilir (nadiren) değişim kategorisi. Paket iyi korunmuş olsa da; Unicode 6.1'e karşılık gelir (sürüm 6.2 çıktı, ancak yeni harfleri yok).