2010-09-12 12 views
5

İki harfli kelimeleri temel olarak bulabileceğiniz bir JavaScript düzenli ifadem var. Sorun, aksanlı karakterleri kelime sınırları olarak yorumlaması gibi görünüyor. Gerçekten de,Vurgulu karakterleri dikkate alan düzenli bir ifadeyi nasıl yapabilirim?

bir kelime sınır ("\ B"), bir o tarafında ve diğer bir "\ W" ile bir "W \" sahip bir nokta arasında iki karakter gibi görünüyor (her iki sırada), hayali karakterleri sayma dizgenin başlangıcını ve sonunu "\ W" ile eşleştirerek kapatır. AS3 RegExp to match words with boundry type characters in them

ve çizgi dahil olmak üzere herhangi alfanümerik karakteri (kelime karakter) ile eşleşen \ w

yana ([a-z-Z0-9_] kısaltması). W \ karakterleri http://www.javascriptkit.com/javatutors/redev2.shtml

açıkça vurgulu karakterler dikkate alınmamıştır ([^ a-z-Z0-9_] kısaltması) olmayan bir kelime ile eşleşir. Bu, Montréal gibi sözcüklerle ilgili bir sorun olur. é, bir sözcük sınırı olarak kabul edilirse, al, iki harfli bir sözcüktür. Ben aksanlı karakterler için izin verecek bir kelime sınır kendi tanımı yapma denedim, ama bir kelime sınırı olarak görmek bile bir karakter değil, tam olarak nasıl bulmak hakkında gitmek için bilmiyorum ..

Any yardım et?

var re_state = new RegExp("\\b([a-z]{2})[,]?\\b", "mi"); 
var match_state = re_state.exec(userInput); 
document.getElementById("state").value = (match_state)?match_state[1]:""; 

cevap

-3

var JavaScript ASCII olmayan kullanmak üzere ayarlanmış: Burada

userInput arar ve re_state düzenli ifade kullanarak iki harfli kelimeleri bulur ilgili JavaScript kodu, nedir? http://blogs.oracle.com/shankar/entry/how_to_handle_utf_8

Diyor ki: İşte JavaScript UTF-8 kullanmak ayarını önerir bir sayfa olduğunu

eklemek bir karakter kümesi özniteliği (charset = "utf-8") komut etiketleri için üst sayfasında:

script type="text/javascript" src="[path]/myscript.js" charset="utf-8" 
+0

... – Shawn

+0

Evet, type özniteliği değildir: virgül gerekmez Ve eğer yakalama grubunu ya gerekmez tarayıcılar tarafından desteklenmez, bu insanlar yorumlama yaparken yapılan bir hata. Karakter kümesi meta etiketi çalışır, ancak bağlantılardaki karakter kümesi gerçek bir şey değildir. –

+0

@Rich Bradshaw: Baş bölümümde var. Demek istediğin bu mu? – Shawn

4

JavaScript regexesgibi (bazı durumlarda ASCII olmayan karakterleri kabul ederken), \w ve \b söz konusu olduğunda umutsuzca yetersiz. Eğer onların ASCII kelime karakterlerinin ötesinde bir şeyle çalışmasını istiyorsanız, farklı bir dil kullanmanız veya Unicode plugin ile Steve Levithan'ın XRegExp kütüphanesini kurmanız gerekir.

Bu arada, regex'inizde bir hata var.Sen isteğe bağlı sondaki virgülden sonra bir \b var ama önünde olmalıdır: Ben de köşeli parantez kaldırıldı

"\\b([a-z]{2})\\b,?" 

; Sadece virgülün normal ifadelerde özel bir anlamı varsa, buna ihtiyaç duymazsınız. Ama sanırım virgülle hiç karşılaşmaya gerek yok; Kelimenin sonunda olduğunuzdan emin olmak için \b yeterli olmalıdır. o değil mi bile HTML5'teki şey değişmedi

"\\b[a-z]{2}\\b" 
+0

@Alan Moore: Literal ve yapıcıyı kullanmanın arasındaki fark nedir? Bulduğum fark, yapıcıyı kullanırsam, düzenli normal ifadelerin eşlemelerini regexp'ime ekleyebilirim. Örneğin: var re_address = new RegExp (match_buildingNumber [0] + match_street [0] + match_city [0] + "?", "mi"); Bu tür bir şey, benim knoledge için, bir regexp literal ile imkansız ... – Shawn

+0

Tamam, kurucuyu kullanmak için iyi bir nedeniniz varsa, her şeyi kullanın. Sadece regex-literal seçeneğinin farkında olduğundan emin olmak istedim. –

+0

@Alan Moore: tamam teşekkürler! Ama hala biraz merak ediyorum .. İkisi arasındaki fark nedir? Neden mümkünse literal kullanmayı tercih etmeli? Ayrıca, XRegExp ve unicode eklentisini indirdim, ancak yine de istediğimi nasıl kullanacağımı göremiyorum. Sanırım orada bir yerde Lm (değiştirilmiş mektup) olurdu? – Shawn

İlgili konular