如何删除除 2 位数字之间的点或逗号之外的所有非字母数字

How to remove all non-alphanumeric except dot or comma between 2 digits

我找了很久,可惜正则表达式真的不适合我...

我只想用 space.

替换 2 位数字(或加号)之间的点或逗号以外的所有非字母数字

示例: 欢迎使用 gskinner.com 的 RegExr v2.1,由 Media Temple 自豪地主办! -98.7 3.141 .6180 9,000

成为

欢迎使用由 Media Temple 98.7 3.141 6180 9,000

主办的 gskinner com 提供的 RegExr v2.1

我知道这可以删除所有非字母数字:[^a-zA-Z0-9] 但我只想在 2 个数字之间添加点或逗号的例外(我已经测试 http://regexr.com/

感谢您的帮助! ;)

[a-zA-Z ]|\d([\.,]\d)?

以上将 select 您希望保留的文本。

它 selects 字母字符 + 空格和数字,可选择嵌入 .'s 和 ,'s. '|'用作布尔 OR。

试试这个:

str = str.replaceAll("[^a-zA-Z0-9 .,]|(?<!\d)[.,]|[.,](?!\d)", "");

正则表达式匹配

  • 您绝对不想要的一切,或者
  • a dot/comma 前面有数字,或
  • a dot/comma not 后跟数字