Kısa cevap: Kullan m = s.match(/[^ ,]/g);
RE'niz beklendiği gibi çalışmıyor çünkü son grup en son eşleşmeyle eşleşiyor (=
c). Atlarsanız
{1,}$, iade edilen maç olacaktır
" a , b ", "a", "b". Kısacası, bir bayrak kullanmadığınız
sürece , RegExp'iniz belirtilen gruplar kadar çok eşleşme döndürür . Bu durumda, döndürülen liste tüm eşleşen alt dizelere başvuruları tutar.
global/g
Etkinize ulaşmak için şunları kullanın:
m = s.replace(/\s*(,|^|$)\s*/g, "$1");
Bu değiştirme , beyaz boşluklarla çevrili, orijinal karakterle ( veya hiçbir şeyle) her virgül ( ,), başlangıç ( ^) ve bitiş ( $) yerine geçer comma.
Bir dizi elde etmek istiyorsanız, şunu kullanın:
m = s.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/);
Bu RE, dizeyi keser (baştaki ve sondaki tüm beyaz boşlukları kaldırır, ardından dizeyi böler <any whitespace>,<any whitespace>. Beyaz boşluk karakterlerinin ayrıca yeni satırlar ve sekmeler içerdiğini unutmayın. Yalnızca boşluklara bağlı kalmak istiyorsanız, yerine boşluk ( ) kullanın\s .
{0,}ile aynıdır*.