سؤال

What regex could do the following?

  1. Remove all whitespace except when not between two alphanumeric characters
  2. When between two alphanumeric characters, replace by a single space
هل كانت مفيدة؟

المحلول

A simple solution would be replacing

(\w )\s*(\w)|\s+

With \1\2.

This would replace the possible multiple whitespaces between two alphnum by a single one, and erase all the others. As it is it (obviously) doesn't account for spaces inside quotes and all "special cases" though.

See demo here.

نصائح أخرى

To remove the spaces except when surrounded by alpha-numerics:

'/(?<![a-zA-z0-9 ]) +| +(?! *[a-zA-z0-9])/'

Online Demo 1

And to replace spaces by single space use this regex:

'/(?<=[a-zA-z0-9]) +(?=[a-zA-z0-9])/'

Online Demo 2

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