Regex (في JavaScript Find/Replace) - تطابق الشخصيات غير الرقمية ولكن تجاهل - و +

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

سؤال

لقد استخدمنا JS/Regex التالية للعثور على جميع الشخصيات غير الرقمية غير الرقمية واستبدالها بصرف النظر عن - و +

outputString = outputString.replace(/[^\w|^\+|^-]*/g, "");

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

لقد حاولت التبديل للاستخدام [\W|^+|^-], ، لكن هذا يحل محل - و +. اعتقدت أن تأكيد Lookahead قد يكون هو الحل ، لكنني لست متأكدًا جدًا من كيفية تنفيذها.

هل لدى أي شخص فكرة عن كيفية تحقيق هذا؟

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

المحلول

فصول الأحرف لا تفعل التناوب ، وبالتالي السبب | حرفي ، و ^ يجب أن يكون في بداية الفصل ساري المفعول (وإلا فإنه يعامل حرفيا.)

استخدم هذا:

[^\w+-]+

(أيضا إذا - ليس آخر ، يجب أن يفلت من \- داخل فئة الأحرف - لذا كن حذرًا إذا تم إضافة المزيد من الأحرف إلى قائمة الاستثناءات).

يمكنك أيضًا القيام بذلك مع lookahead سلبية مثل هذا:

(?![+-])\W

ملاحظة: لا تريد أ * أو + بعد ذلك \W, ، لأن Lookahead ينطبق فقط على الشخصية التالية مباشرة (و g العلم يجعل استبدال تكرار حتى القيام به).

لاحظ أيضا ذلك \w و \W انصح _ كحرف كلمة. إذا لم يكن هذا أمرًا مرغوبًا ، فستحل محله يمكنك استخدامه (?![+-])[\W_] (أو استخدم نطاقات صريحة في التعبيرات الأولى).

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