تلميحات مجمع العملة العادية التعبير عن جافا سكريبت ؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

أنا يجب أن يتطابق عدد لانهائي من الأرقام في صفحة ويب.

أنا بحاجة إلى أن تكون قادرة على تطابق كل من الصيغ التالية:

100 $
99$
$99
$ 8
$.99
$ .8
$ 99.8
.99$
.99 $
9.2 $
1.2$

وتعادل باستخدام الفواصل:

444,333
22,333
1,222
11,111,111
333,333,333,333.01132

أو المساحات:

444 333
22 333
1 222
11 111 111
333 333 333 333.01132

هذا هو حقا واحدة من الصعب بالنسبة لي.أنا معتاد على اللعب مع regexp لكني قد فشلت تماما أن أكتب شيئا واقية من الرصاص.عادة http://www.regexlib.com لديه الحل ولكن ليس هذا واحد.

لا أستطيع التفكير في طريقة أخرى غير استخدام regexp لأنه نص عادي بحث/استبدال.

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

المحلول

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

^(?:\$\s*)?(?:(?:\d{0,3}(?:[, ]\d{0,3})*[, ])+\d{3}|\d+)(?:\.\d*)?(?:\s*\$)?$

كسر:

  • ^(?:\$\s*)? سوف ابحث عن اختياري $ في بداية السلسلة ، تليها أي كمية من المساحات
  • (?:(?:\d{0,3}(?:[, ]\d{0,3])*[, ])+\d{3}|\d*) يطابق أي عدد تقسيمها إلى مجموعات مفصولة بفاصلة أو الفضاء (\d{0,3}(?:[, ]\d{0,3})*[, ])+\d{3}) أو سلسلة من الأرقام (\d+)- حتى 123,456,789, 123 456 789 و 123456789 سيكون جميع المتطابقة.التعبير العادي لا يقبل الأرقام مع غير لائق تجمع (حتى 123,45,6789 لن تكون مطابقة)
  • (?:\.\d*)? سوف تطابق الرقم مع اختياري العشرية و أي عدد من الأرقام بعد
  • (?:\s*\$)?$ ستكون مباراة اختياري دولار في نهاية السلسلة, يسبقه أي مبلغ من الفضاء.

نصائح أخرى

وماذا أكتب 1 التعبير العادي، وعندما يمكنك إرسال عدة، وتطبيقها في المقابل؟

وأفترض (؟) التي يمكنك تكرار خلال خط سطرا. لماذا لا نحاول بك التعبير العادي فاصلة والدهاء، تليها الفضاء والدهاء REGEXP الخاص وما إلى ذلك؟ إذا كان أحد مباريات، ثم لا تهتم تحاول بقية، وتخزين النتائج الخاصة بك والانتقال إلى السطر التالي.

وماذا عن القيام بذلك في 2 الخطوات التالية:

أولا استبدال جميع المساحات مع ''

وبعد ذلك، إذا كان رقم التنسيق هو نفسه دائما، يمكنك استبدال الفواصل مع ''

وبعد ذلك، من السهل جدا، أليس كذلك؟

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