2013-04-24 3 views
4

Я хочу совместить значения, содержащие в них несколько запятых. Я могу сопоставлять значения только с одной запятой. regex: (\$\d+\,\d+) Пример значения: $567,76, но мне нужно сопоставить это значение $567,76,87, но это регулярное выражение не работает.Цена матча с несколькими запятыми

ответ

6

Попробуйте этот шаблон, возможно, он может помочь.

^\$\d+(,\d+)*$ 

Это будет соответствовать на

$567 
$567,76 
$567,76,87 

но не

$567,76,87, 
+0

Спасибо, но что, если у меня есть такая величина '$ 1,095,00'? –

+1

попробуйте это, '^ \ $ \ d {1,3} (, \ d {3}) * (\. \ D {1,2})? $' И [здесь демонстрация] (http: // скрипка .re/fn2h6) –

1

Вы можете разобрать значение с помощью double.Parse(currency, NumberStyles.Currency) вместо использования регулярного выражения.

1

Попробуйте это;

^\$\d+(,\d+)+$ 

Несколько случайных совпадений;

$1622,40,749 
$37,5844 

Regex r = new Regex(@"^\$\d+(,\d+)+$"); 

string[] partNumbers = { "$567,76", "$567,76,87", "$567,76,87," }; 
foreach (var i in partNumbers) 
{ 
     Console.WriteLine("{0} {1} a valid part number.", i, r.IsMatch(i) ? "is" : "is not"); 
} 

$567,76 is a valid part number. 
$567,76,87 is a valid part number. 
$567,76,87, is not a valid part number. 

Вот DEMO.

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