سؤال

ولقد asp:TextBox للحفاظ على قيمة المال، أي '1000'، '1000،0 "و" 1000،00 "(فاصلة غير محدد بسبب مستوى الروسي).

وماذا ValidationExpression لا بد لي من استخدام إلى asp:RegularExpressionValidator مناسب؟

وحاولت \d+\,\d{0,2} ولكن لا تسمح لعدد بدون أرقام عشرية، على سبيل المثال مجرد '1000'.

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

المحلول

\d+(,\d{1,2})?

وسيسمح الفاصلة فقط عندما يكون لديك أرقام عشرية، ولا تسمح فاصلة على الإطلاق. علامة الاستفهام تعني نفس {0,1}، وذلك بعد \d+ لديك إما الصفر الحالات (أي شيء) أو مثيل واحد من

,\d{1,2}

وكما يشير هيلين بشكل صحيح، فإنه لن يكون كافيا لاستخدام مجموعة غير التقاط، كما هو الحال في

\d+(?:,\d{1,2})?

وو?: إضافي يعني أن الأقواس وتهدف فقط لتجميع جزء ,\d{1,2} للاستخدام من قبل علامة الاستفهام، ولكن ذلك ليس هناك حاجة لتذكر ما كان يقابل داخل هذه الأقواس. لأن هذا يعني العمل أقل لenginge التعابير المنطقية، تحصل على تعزيز الأداء.

نصائح أخرى

ونحن نستخدم هذا التعبير العادية ليبرالي جدا من أجل التحقق من المال:

new Regex(@"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$");

ويتيح لجميع هذه: $ 0، 0، (0.0000)، 0.1، 0.01، 0.0001، $ 0.1، $ 0.01، 0.0001 $، ($ 0.1)، ($ 0.01)، $ (. 0001)، 0.1، 0.01 ، 0.0001، 1.، 1111.، 1111، 1، 1.00، 1،000.00، $ 1، $ 1.00 $ 1،000.00، $ 1.0000، 1.0000 $، 1،000.0000 $، -1، -1.00، -1،000.00، - $ 1، - $ 1.00، - $ 1،000.00 ، - $ 1، - $ 1.00، - $ 1،000.00، $ -1، $ -1.00، $ -1،000.00، (1.00) $ (1)، $، $ (1،000.00)، $ (1) و (1.00) $، (1،000.00) $ (1 $)، ($ 1.00)، ($ 1،000.00)

وأنا استخدم هذا واحد في جافا سكريبت : قد تكون ذات فائدة لك في ج #

var entered = '10.00';
var regex = /^\d+(?:\.\d{2})?$/; // starts with N digits optional ".\d\d"
console.log(entered.match(regex));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top