Regex (في JavaScript Find/Replace) - تطابق الشخصيات غير الرقمية ولكن تجاهل - و +
-
02-10-2019 - |
سؤال
لقد استخدمنا JS/Regex التالية للعثور على جميع الشخصيات غير الرقمية غير الرقمية واستبدالها بصرف النظر عن - و +
outputString = outputString.replace(/[^\w|^\+|^-]*/g, "");
ومع ذلك ، فإنه لا يعمل تمامًا - لا يحل محل ^ و | الشخصيات. لا يسعني إلا أن أتساءل عما إذا كان هذا شيء يتعلق بـ ^ و | يجري استخدامها كحرفات ميتا في regex نفسها.
لقد حاولت التبديل للاستخدام [\W|^+|^-]
, ، لكن هذا يحل محل - و +. اعتقدت أن تأكيد Lookahead قد يكون هو الحل ، لكنني لست متأكدًا جدًا من كيفية تنفيذها.
هل لدى أي شخص فكرة عن كيفية تحقيق هذا؟
المحلول
فصول الأحرف لا تفعل التناوب ، وبالتالي السبب |
حرفي ، و ^
يجب أن يكون في بداية الفصل ساري المفعول (وإلا فإنه يعامل حرفيا.)
استخدم هذا:
[^\w+-]+
(أيضا إذا -
ليس آخر ، يجب أن يفلت من \-
داخل فئة الأحرف - لذا كن حذرًا إذا تم إضافة المزيد من الأحرف إلى قائمة الاستثناءات).
يمكنك أيضًا القيام بذلك مع lookahead سلبية مثل هذا:
(?![+-])\W
ملاحظة: لا تريد أ *
أو +
بعد ذلك \W
, ، لأن Lookahead ينطبق فقط على الشخصية التالية مباشرة (و g
العلم يجعل استبدال تكرار حتى القيام به).
لاحظ أيضا ذلك \w
و \W
انصح _
كحرف كلمة. إذا لم يكن هذا أمرًا مرغوبًا ، فستحل محله يمكنك استخدامه (?![+-])[\W_]
(أو استخدم نطاقات صريحة في التعبيرات الأولى).