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