2010-03-17 20 views
6

Yardımıma ihtiyacım var. Bir dize son boşluk karakteri ile eşleşecek bir regex arıyorum. JavaScript ve klasik ASP kullanıyorum. Son boşluk karakteriyle eşleşecek regex

ben 100 karakter Döşeme metnin uzun bir dize var. Döşeme, 100 karakter sınırından dolayı bir kelimeyi kesiyorsa, yazım hatalarından kaçınmak için son karakteri kaldırmak istiyorum.

regex.replace(/[ ]$.*?/ig, ''); 

Fikir sahibi olan var mı? Teşekkürler.

+2

Belki de aradığınız şey hakkında daha hassas olmalısınız. “Son uzaydan sonuna kadar her şeyi eşleştir”, daha iyi uyacaktır. – Gumbo

cevap

25

Anlayışımdan, son boşluğu ve sonra her şeyi kaldırmanız gerekiyor, değil mi?

str = str.replace(/\s+\S*$/, "") 
+0

Mükemmel, Stereofrog'a tam olarak ihtiyacım olan şey –

+2

Çalıştığını duyduğuma sevindim, ama Gumbo haklıydı - bir dahaki sefere daha kesin olmaya çalışın – user187291

1

regex /^.+ [^ ]*$/ bir satırın sadece son uzay eşleşir. + (

/\s(?=\S*$)/ 
+0

Hayır, bu, tüm satırı, daha fazla veya daha az eşleşecek. – Tomalak

+0

evet öyle olacak, ama bu son uzay için belirsiz, kusura bakmadığımı belirttim. İyi yerleştirilmiş bir yakalama grubu, buna dayanarak ne istediğinizi size verecektir. – zellio

7

bir lookahead assertion deneyin), satırın sonunda ($)

Boşluk bir karakter sınıfından daha fazla eşleşmek istemediğiniz sürece, bir karakter sınıfında boşluk koymak gereksizdir, örneğin [\t ] sekmeleri.

gerçekten / $/


EDIT kullanın tek son uzay sadece eşleştirmek için: Geçen alan (düşünmeye sonra her şeyi kesmek için, bu aslında görünüyor budur kullanabileceğiniz istiyorum: "en az bir boşluk ve herhangi boşluk olmayan chara:

regex.replace(/ +\S*$/ig, ''); 

nerede regex demektir sonra (\S*) satırın sonunda ($). ".

Bu, yalnızca son alanın sonundaki bir satırın son bitiyle eşleşebilir. Bir yan etki olarak, ip sonunda kesilir.

+0

Bu sanatı öğrenmek için en iyi yer neresi söylerdi? – dclowd9901

+0

@Gumbo: Bir şeyi özlüyorum mu yoksa gereksiz yere karmaşık mı? – Tomalak

+0

@ dclowd9901: Bu sadece pratik. Ne kadar sıklıkla kullanırsanız o kadar yetenekli olursunuz. – Gumbo

2

/ +$/ 

bir boşluk karakteri (), en az bir kez olacak bu:

/ (?=[^ ]*$)/ 

Ve keyfi boşluk karakterleri için

:

0

Eğer " [^ ]*$" olacağını isterdim ne "klasik" RE'lerı, kullanma - yani satırın sonuna ardından boşluk olmayan karakteri, rastgele sayı ile biten bir boşluk karakteri. "Boşluk olmayan karakterler", bir "kelime" tanımınıza uysa da gelebilir veya olmayabilir - örneğin, ortadaki bir sayıyı kesmenizi de engeller. Harf içeren bir "kelimeyi" sınırlamak isterseniz, bunun yerine " [^A-Za-z]*$" kullanabilirsiniz.

Ayrıca, bir kelimenin tam olarak 100'üncü karakterde bitmesi durumunda, bu alanın önceki boşlukla eşleşeceğine dikkat edin, böylece söz konusu son sözcüğü kaldıracaksınız. Bunu önlemek istiyorsanız, muhtemelen (muhtemelen) kestiğiniz ilk karaktere bakmak isteyeceksiniz, ve eğer beyaz boşluksa, tampondan hiçbir şey çıkarmayın.

İlgili konular