2017-02-08 5 views
2

Я создал строковое значение с использованием метода padStart (padLeft), например:Удалить первые нулевые значения из строки с использованием регулярных выражений

"5".padStart(19, "0") 

, что приводит к «0000000000000000005» Как я могу получить, что 5 назад с помощью регулярное выражение? Я проверил это:

/^0*(\d+)$/.exec(d)[1] 

возвращающие 5 правильно.

Но это регулярное выражение возвращает нуль что-то вроде "00000012.22"

Образцы:

5> 5

005> 5

0011,22> 11,22 >> Это первая проблема!

00100 >> 100

001001 >> 1001

00,5 >> 0,5 Это вторая проблема!

Рабочие коды, но без регулярных выражений:

function toDb(d) { 
     if (d == null) return null; 
     var precisionIndex = d.indexOf('.'); 
     return d.toString().padStart((29 + precisionIndex + 1), '0'); 
     } 

function fromDb(d) { 
      if (d == null) return null; 
      d = d.replace(/^0+/, ''); // I'd like to use regex here 
      if (d.indexOf('.') == 0) // I'd like to use regex here 
       d = '0' + d; // I'd like to use regex here 
      return d; 
    } 

fromDb (toDb ('0,5')) возвращает 0.5 для меня. Но я бы хотел использовать регулярное выражение в моих кодах.

+1

На самом деле существует регулярное выражение для решения таких задач, но, если вы хотите сделать его действительно понятным, оно будет очень длинным и довольно неумелым. –

ответ

3

Использовать String#replace способ заменить ведущий 0.

console.log(
 
    "0000000000000000005".replace(/^0+(?=\d)/, '') 
 
) 
 

 
console.log(
 
    "000000000000000000.5".replace(/^0+(?=\d)/, '') 
 
)

В регулярном выражении start anchor(^) утверждает начальное положение строки и 0+ соответствует комбинации one or more repetition из 0, вообще ^0+ матчей 0 с в начале.

UPDATE: Чтобы избежать удаления 0 непосредственно перед . использованием positive look ahead assertion, (?=\d) матч до 0, который следует цифра.

+0

007 - лучшая тестовая строка. – Aron

+1

Я действительно оценил ваш ответ + Это на четыре раза быстрее (-: Спасибо за информацию о вашей информации. –

+1

@YaserMoradi: рад, что это помогло :) :) –

Смежные вопросы