سؤال

أحتاج CLR Regex عن الكسور أو كلها أرقام الكسور حيث

1/2 هو الصحيح 12 2/3 هو الصحيح أيضا ،

و علامة ناقص يمكن المنبثقة قبل أي عدد.

كنت أول من جاء مع -?([0-9]* )?-?[0-9]+\/-?[0-9]+ ولكن يبدو أن تسمح 2/7 12 أيضا على سبيل المثال.

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

المحلول

حسنا, هذا regex سيكون في جزأين ، (اختياري) عدد:

(:?-?\d+ )?

و الجزء الكسري:

-?\d+/-?\d+

ونحن بحاجة إلى المباراة كاملة سلسلة ؛ لذلك:

^(:?-?\d+ )?-?\d+/-?\d+$

اختبار قليلا:

PS> $re=[regex]'^(:?-?\d+ )?-?\d+/-?\d+$'
PS> "1/2","12 1/2","-12 2/3","-5/8","5/-8"|%{$_ -match $re} | gu
True

ومع ذلك ، فإن هذا يسمح "-12 -2/-3" وكذلك, أو أشياء مثل "1 -1/2" التي لا معنى كبير.

ETA: الأصلي regex يعمل أيضا.أنها تفتقر فقط المراسي لتبدأ وتنتهي السلسلة (^ و $, ، على التوالي).مضيفا تلك التي تجعل من العمل بشكل صحيح.

نصائح أخرى

وكان لي مجرد شرط مماثل، ولكن أردت أن تطابق الأرقام العشرية كذلك. خطرت لي التعبير المعتاد التالي

^-?(?<WholeNumber>\d+)(?<Partial>(\.(?<Decimal>\d+))|(/(?<Denomiator>\d+))|(\s(?<Fraction>\d+/\d+)))?$

وأو مجرد هذا إذا كنت لا تريد المجموعات المسماة

^-?\d+((\.\d+)|(/\d+)|(\s\d+/\d+))?$

لإزالة عدد عشري من التحقق من صحة، فإنه سيتم اختصارها إلى

^-?\d+((/\d+)|(\s\d+/\d+))?$

ويساعد هذا الأمل شخص!

وهذه محاولة، مجرد جزء واحد وليس عدد صحيح

/^\d{1}\/?\d{1}$/
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top