Maxfashko, двойной слэш потому что тут мы имеем дело со строкой которую преобразуем в regexp, по этому теребуется "экранировать символ экранирования".)
new RegExp(
'\\D' //строка
)
// ->
/\D/ //regexp
// ->
[^0-9] //то что ищем на самом деле
Если же написать
new RegExp ('\D') то получим мы
new RegExp ([экранированный символ D]), а поскольку для строки "D" не является спецсимволом, то экранированный "D" - это то же самое, что и обычный "D", т.е. запись
new RegExp ('\.') - на деле то же самое, что и
new RegExp ('.') .