2016-03-21 4 views
1

Мне нужно заменить \- минус \,+- запятая + минус, когда пробел/пробел/запятая перед минусом. В пути SVG я нашел это:Regexp в Javascript: заменить минус запятой + минус при выполнении условия

`201.86-38.778` 

и мне нужно, чтобы сделать его

`201.86,-38.778`. 

Я попытался str.replace(/-/g,'\,-'), но это создает дополнительные запятые, когда не требуется.

Update, мне также нужно, чтобы это работало так:

`201.86 -38.778` // notice the space 

, чтобы сделать его

`201.86,-38.778`. 
+1

Пытался что-нибудь? – anubhava

+0

Я не знаю, как заменить минус только в этом случае. Я попробовал 'str.replace (/ -/g, '\, -')', но это создает дополнительные запятые, когда это не нужно. – thednp

ответ

1

Вы можете использовать

/(^|[^,\s])-/g 

См regex demo

Разбивка:

  • (^|[^,\s]) - спичкой и захватить начало строки или символы, кроме запятой или пробелы (на которые будет ссылаться wi th $1 backreference в подменю образца)
  • - - буквальный дефис.

В шаблоне замены используйте $1,-, обратную ссылку на захваченный текст + запятую и дефис.

Демо:

var re = /(^|[^,\s])-/g; 
 
var str = '201.86-38.778'; 
 
var result = str.replace(re, '$1,-'); 
 
document.body.innerHTML = result;

+1

Удивительно, как всегда. – thednp

+0

Я обновил вопрос, пожалуйста, посмотрите. – thednp

+1

Используйте ['.replace (/ (^ | [^,]) \ s * -/g, '$ 1, -')'] (https://regex101.com/r/qC0pO7/1) –