سؤال

لدي هذا النص عينة, التي يتم استردادها من اسم الفئة على عنصر html:

rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive

أنا أحاول أن مباراة "test1"/"test2" البيانات في كل من هذه الأمثلة.أنا حاليا باستخدام التالية regex الذي يطابق "err-test1" نوع من word.أنا لا يمكن معرفة كيفية الحد من هذا البيانات بعد الواصلة(-).

/err-(\S*)/ig

رأسي يؤلمني من ضجيجا ضد هذا الجدار.

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

المحلول

من ما أنا أقرأ التعليمات البرمجية يعمل بالفعل.

Regex.exec() بإرجاع مجموعة من النتائج على النجاح.

العنصر الأول في المصفوفة (مؤشر 0) ترجع السلسلة بأكملها ، وبعد كل () المغلقة العناصر هي التي دفعت إلى هذه المجموعة.

var string = 'rich-message err-test1 erroractive';
var regex = new RegExp('err-(\S*)', 'ig');
var result = regex.exec(string);

alert(result[0]) --> returns err-test1
alert(result[1]) --> returns test1

نصائح أخرى

هل يمكن أن محاولة "يخطئ - ([^ \ ن \ ص] *) - ولكن هل أنت متأكد من أن هذا هو التعابير المنطقية التي هي المشكلة؟ هل تستخدم نتيجة بأكملها، وليس فقط التقاط الأول؟

والاشياء بعد - يجب أن تكون في مجموعة النتائج. العنصر الأول هو عن النص مطابقة (على سبيل المثال "يخطئ-TEST1") والعناصر القادمة هي مباراة من الأقواس القبض (على سبيل المثال "TEST1").

myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];

وإليك موقع مرجعي .

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