سؤال

'{5}<blah>{0}</blah>'

أريد أن أحول ذلك إلى:

['{5}', '<blah>', '{0}', '</blah>']

أنا أستخدم حاليا: ________.split(/({.*?})/);

لكن هذا يفشل عندما يكون الدعامة المجعد هي الشخصية الأولى كما في الحالة:

'{0}<blah>'

الذي يتحول إلى:['', '{0}', '<blah>'] ... صفيف العناصر المكون من 3 ، وليس 2

ما الخطأ في regex الخاص بي؟

شكرًا!

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

المحلول

لا حرج في regex ، ولكن هناك مشكلة في كيفية استخدامك للانقسام. يقوم Split بإرجاع صفيف يعتمد على محدد ، لذلك إذا كان المحدد أولاً ، فإنه يمنحك الأشياء إلى اليسار واليمين من العنصر المقسم.

فقط تحقق لمعرفة ما إذا كان العنصر الأول == '' وأزله إذا كان كذلك.

نصائح أخرى

هذا يجب أن يفعل ذلك:

split(/((?!^)\{.*?\})/)

Lookahead السلبي - (?!^) - خلف IFF ، لا تبدأ المباراة في بداية السلسلة.

ما رأيك في:

'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g)

قيمة الكتل المجعد هي كل عنصران من البند 1.

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