2010-08-24 27 views
5

İçinde "garip" karakterler bulunan herhangi bir dizeyle eşleşecek bir kara büyü arıyoruz. Standart ASCII karakterleri iyidir. Diğer her şey değil..Net Regex İçindeki ASCII olmayan herhangi bir karakterle eşleşen Regex

Bu, çeşitli web formlarını sterilize etmek içindir.

+1

Cidden? U + 0001 BAŞLANGIÇ BAŞLATMAK veya U + 0007 BELL iyidir, fakat sade İngilizce değil mi? ASCII'nin eşlemek istediğin şey olduğundan emin misin? –

+0

Haydi, neden \ 'dan nefret ediyorsun? Bu harika. Ama evet, cidden. Son olarak, bunlardan hiçbirini, ayna karakterleri veya diğerlerinden bazıları gibi sayfa oluşturmaya müdahale etmediğimi kontrol ettim. –

+1

é de bir sayfa ile karıştırmaz. Sayfa oluşturmayla uğraşmak sorunsa, belki \ p {C} 'yi kullanın. Yeni Regex (@ "\ p {C}") Değiştir (şüpheli, string.Empty) 'ASCII ve ASCII olmayan denetimleri ve biçimlendiricileri silecektir, normal metinlere zarar vermezken daha naif (ya da Bu, nave) yaklaşımı mangle olur. Özellikle herhangi bir yerde isimleriniz ya da kişiler ya da yerler varsa (uygun isimler, ASCII olmayan harflerin İngilizce olarak çok fazla yer kapladığı yerlerde ve kullanıcıların onları yönlendirdiyseniz özellikle üzüldüğü yerler). –

cevap

6

Bu x00 (NULL) gibi bazı "tuhaf" karakterler hala vardır ASCII aralığında

[^\x00-\x7F] 

dışında bir şey alır, ama onlar geçerli ASCII vardır. Başvuru için
, olmayan diğer ASCIIs (ve henüz daha concision ile) zarar vermeden biçemleyicileri ve kontrolleri temizlenmesi için ASCII table

+1

Bu "ASCII tablosu" sayfası saçmadır (Fransızca'mdan özür dilerim). İkinci grafiği "genişletilmiş ASCII setleri" nin "en popüler" hali olarak sunuyor - tekrar geliyor mu? Bu Cp850! Kimse bunu amaç için kullanmaz; Sadece Windows komut satırının varsayılan kodlaması olur. Ayrıca, tablolar görüntüler ve bir LCD ekranda cehennem gibi görünüyorlar. Onları Wikipedia'ya gönder: http://en.wikipedia.org/wiki/ASCII –

2

kendinden belgeler üzerinde concision için istedi ne için [^\p{IsBasicLatin}], [^\x00-\x7F] veya \p{C} bakın.