Как удалить долларовый формат с регулярным выражением

Я пытаюсь удалить формат доллара из строки '$ 1,109,889.23'. Я попытался использовать регулярное выражение с помощью:

"[^\\d]"

но затем я получаю запятые.

Любая помощь? Спасибо заранее.

8 ответов

Я использую ColdFusion. [^\D.] Отлично работает как упомянутый выше eldarerathath.

<cfset amt="$1,109,889.23">
 <cfset newamt="ReReplace(amt," "[^\d.]",="" "","all")="">
 <cfoutput>#newAmt#</cfoutput>
</cfset></cfset>


Для этого вам не нужно регулярное выражение.

Просто используйте lsParseCurrency:

numericValue = lsParseCurrency('$1,109,889.23'); writeOutput(numericValue);

Пример на trycf.com дает:

1109889.23

В соответствии с предложением Leigh ниже... если yer locale - это то, что не использует , и . для тысяч и десятичных разделителей (соответственно)... обязательно укажите локаль, например:

numericValue = lsParseCurrency('$1,109,889.23', 'en_us');


Как просто выполнить поиск и заменить для , и $?

но если вы это сделаете.

[^\d.]+


[\d,.]+ предоставит вам номер. Здесь - ваш пример в Rubular.


В Java:

String newString = oldString.replaceAll("$", "");


Будет ли это работать на вас? ^\$


Я не уверен, что я точно понимаю, чего вы хотите, но, похоже, в вашем примере вы бы хотели получить "1,109,889.23". Если это так, почему бы вам просто не выбрать use [\d,.\x20]+ (обратите внимание, что период не экранирован, так как он находится в наборе символов, и обратите внимание на \x20, чтобы выбрать пробелы, если они используют это вместо запятых), чтобы выбрать просто номер. Если вы хотите выбрать все, что НЕ является частью числа, как показывает ваш пример, вы просто выполните поиск [^\d,.\x20]. Это будет работать для любого валютного формата, а не только для тех, которые используют знак доллара. Он также допускает несколько типов пунктуации, например, позволяя пробелам вместо запятых отделить несколько чисел. Тем не менее, я согласен с Тимом Пицкером в том, что регулярное выражение может быть не лучшим инструментом для этой работы.


Так как $ является метасимволом в регулярном выражении (это означает "конец строки" или "конец строки", в зависимости от текущих настроек), его нужно экранировать до \$. Но зачем вообще использовать регулярное выражение, если это только один фиксированный символ?

licensed under cc by-sa 3.0 with attribution.