Próbowałem z replace(/ ./g, '.');, aby wyeliminować przecinek przed kropką bez pomyślnych. Jakiś pomysł, co jest nie tak? Dzięki.

1
zsola3075457 7 grudzień 2013, 16:31

4 odpowiedzi

Najlepsza odpowiedź

Przypuszczam, że skarga jest to, że każda postać, a następnie przestrzeń jest zastępowana za pomocą .. To dlatego, że . jest znakiem wieloznacznym. Dosłownie oznacza "dopasuj wszystko oprócz nowej linii":

(Kropka, punkt dziesiętny) pasuje do dowolnej pojedynczej postaci z wyjątkiem znaków Newline: \n \r \u2028 lub \u2029. (MDN)

Musisz uciec, jeśli chcesz pasować do dosłownego {x0}}:

replace(/ \./g, '.')
3
lonesomeday 7 grudzień 2013, 12:33

. jest znakiem wyjątkowym, powinieneś uciec:

" .bla".replace(/ \./g, '.');
2
juan.facorro 7 grudzień 2013, 12:33

Sposób, w jaki prezentujesz kropkę . oznacza match any single character (z wyjątkiem nowej linii), kropka {x2}} jest uważana za specjalną postać w wyrażeniach regularnych i musi być uciekł.

Wyłączyłbym się do kwantyfikatora także z dopasowaniem białego znaku przed kropką, więc zastępuje wszystkie zdarzenia.

str = str.replace(/\s+\./g, '.');
2
hwnd 7 grudzień 2013, 14:26

Czy próbowałeś string = string.replace(/\s\./, '.');?

1
Arthur 7 grudzień 2013, 12:34