ما هو C # التعبير العادية التي سوف تحقق من صحة العملة، أو تعويم صحيح؟

StackOverflow https://stackoverflow.com/questions/617826

  •  03-07-2019
  •  | 
  •  

سؤال

ما هو تعبير عادي مناسبة لC # التي سوف تحقق من صحة رقم إذا كان يتطابق مع ما يلي؟

<اقتباس فقرة>
 $1,000,000.150
 $10000000.199
 $10000 
 1,000,000.150
 100000.123
 10000

وأو مكافئات السلبية؟

هل كانت مفيدة؟

المحلول

ويمكنك استخدام التعابير المنطقية csmba إذا قمت بإجراء تعديل طفيف واحد لذلك.

^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$

نصائح أخرى

وأعتقد SSG هو الصحيح. انها ليست الاستخدام الجيد حقا من التعبيرات المنتظمة، خاصة إذا كان البرنامج لا بد أن تتعامل مع دخول غير الولايات المتحدة تركز على البيانات.

وعلى سبيل المثال، إذا كان رمز العملة هي اليورو، أو الين الياباني أو الجنيه الاسترليني أي من رموز عشرة عملة أخرى هناك؟

وماذا عن عدد تنسيق القواعد؟

في الولايات المتحدة سوف تقوم بإدخال 1,000,000.00 لكن في فرنسا، وهذا ينبغي أن 1.000.000,00. بلدان أخرى السماح التباعد بين أرقام تجمع ...

إذا كنت تستخدم التعبيرات المنتظمة على التوالي من دون أخذ الثقافة بعين الاعتبار، ثم كنت أبدا للتحقق من صحة بنجاح إلا إذا كنت متأكدا 100٪ لن يتم استخدام البرنامج من أي وقت مضى في سياق تتمحور حول عدم والولايات المتحدة.

^\$?(\d{1,3},?(\d{3},?)*\d{3}(\.\d{1,3})?|\d{1,3}(\.\d{2})?)$

وأعتقد أنني قد وجدت مشكلة مع الحل التدابير الوقائية الخاصة (أو ربما علة MS!).

وتشغيل هذا:

float.TryParse("0,2",NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"), out num)

وإرجاع صحيحا. بالتأكيد "0،2" ليست قيمة العملة صالحة؟

كن حذرا مع عوامات. في نهاية المطاف سوف تصل قضية مثل مثلت 0.01 كما 0.00999999. سلاسل أو الأعداد الصحيحة هي أفضل للاستخدام.

وهذه محاولة واحدة. قد تحتاج بعض ضبط السماح فقط للعلامة العشرية واحدة، ولكنها لا تتطابق مع حالات الاختبار الخاص بك. آمل أن يساعد هذا.

[$\d,.]+

استخدم هذا التعبير المنتظم للعملة الأمريكية \ $ (\ د) * \ د المباريات 300 $، $ 12900 غير ماتش $ 12900.00

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top