2015-11-19 4 views
1
somevar = ' 150,00 $'; 
someothervar = '$25.0; 

Я хочу удалить знаки доллара, пробелы, запятые или точки.заменить ни одного из этих символов ничем: ''

Пробный somevar.replace(/('$'|' '|,|\.)/g,'');15000 $ (ведущее место).

Итак, похоже, что запятая удаляется, но не все остальное?

Я мог бы так:

somevar.replace(/\$/g,'').replace(/ /g,'').replace(/,/g,'') 

Но, конечно, есть более «элегантный» способ?

+0

Каков ожидаемый выход? '150,00 $' -> '150' или' 15000'? –

+0

Вы полностью уверены в точках и запятых? – RobertoNovelo

+0

'/ \ D/g' - лучший способ, но будьте осторожны, в один прекрасный день, если вы иногда удаляете десятичные знаки из вашего ответа ...;) –

ответ

2

Вы можете использовать /[$,.\s]/g:

' 150,00 $'.replace(/[$,.\s]/g, ''); 
// "15000" 

'$25.0'.replace(/[$,.\s]/g, ''); 
// "250" 

Регулярное выражение не работает, потому что вам нужно, чтобы избежать $ характер, и удалить одиночные кавычки. Вы могли бы использовать: /\$| |,|\./g.

Кроме того, вы также можете просто заменить все не-цифровой символ с помощью /\D/g:

' 150,00 $'.replace(/\D/g, ''); 
// "15000" 

'$25.0'.replace(/\D/g, ''); 
// "250" 
+0

Это предложение'/\ D/g' было опубликовано Роберто, прежде чем вы это сделали , –

+0

@stribizhev Я ответил ~ 3 минуты раньше него. Я даже не видел его ответа, пока не увидел ваш комментарий. Вы предлагаете мне удалить это или что-то еще? –

+1

".. потому что вам нужно было избежать символа $" - возможно, добавьте разъяснение о том, почему * вам не нужно? – usr2564301

2

я бы:

var somePriceString = "$$2.903.5,,,3787.3"; 
 

 
console.log(somePriceString.replace(/\D/g,''));

Если бы я хотел, чтобы удалить какой-либо не- значный символ.

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