Вы можете сделать матч Regex
для своей цели.
Regex
ниже подходит для конкретных примеров. Но он будет принимать запятую ,
в случайных местах. Demo здесь.
^\d+(\,\d+)*(\.\d{1,4})?$
Лучше Regex
будет следующее. Проверьте demo. Base Regex взято из this сообщение.
^\$?(\d{1,3},(\d{3},)*\d{3}|\d+)(.\d{1,4})?$
Update
Чтобы ответить на комментарий - выше Regex
позволяет 0090
. Попробуй это. Демо-версия here.
^((([1-9]\d{0,2},(\d{3},)*\d{3}|[1-9]\d*)(.\d{1,4})?)|(0\.\d{1,4}))$
Обновление 2
C# Использование
var currencyString = "1,234,456.7890";
var regex = @"^((([1-9]\d{0,2},(\d{3},)*\d{3}|[1-9]\d*)(.\d{1,4})?)|(0\.\d{1,4}))$";
var isValidCurency = Regex.IsMatch(currencyString, regex);
Обновление 3
В соответствии с ОП, разделенные ,
допускается в любом месте. Обновлено Regex
с демо here.
^(([1-9]\d*(\,\d+)*(\.\d{1,4})?)|(0\.\d{1,4})|0)$
Update 4
Используйте этот один. Демо-версия HERE.
^((([1-9]\d{0,2}(,\d{3})*)(\.\d{1,4})?)|[1-9]\d*|(0\.\d{1,4})|0)$
Ну this :)
^((([1-9]\d{0,2}(,\d{3})*|[1-9]\d*)(\.\d{1,4})?)|[1-9]\d*|(0\.\d{1,4})|0)$
Check [** это **] (http://stackoverflow.com/questions/9182858/validating-my-money). Здесь [** еще один **] (http://stackoverflow.com/questions/2693832/best-way-to-validate-currency-input). Если это не помогло, может быть регулярное выражение, is'nt?! – Rohit416
Вы получаете десятичный разделитель через '[CultureInfo] .NumberFormat.NumberDecimalSeparator'. Теперь я уверен, что для этого есть хороший RegEx, но вы также можете сделать это, как 'string [] parts = value.Split (новая строка [] {decimalSeparator}); bool isValid = parts.Length <= 1 || parts [1] .Length <= 4; ' – Corak
Regex'^\ d + (\, \ d +) * (\. \ d {1,4})? $ 'может работать для вас. Демо https://regex101.com/r/lD4eZ5/1 –