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

时间:2016-10-21 15:25:52

标签: java regex string expression alpha

我搜索了很长时间,但不幸的是,正则表达式真的不适合我...

我只想用2位数(或加号)之外的空格替换除点或逗号之外的所有非字母数字。

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

成了

欢迎来到gskinner com的RegExr v2.1,由Media Temple 98.7 3.141 6180 9,000自豪地主持

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

感谢您的帮助! ;)

2 个答案:

答案 0 :(得分:5)

试试这个:

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

正则表达式匹配

  • 你绝对不想要的一切,或者
  • 点/逗号以数字开头,或
  • 点/逗号后跟数字

答案 1 :(得分:1)

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

以上将选择您想要保留的文字。

它选择字母字符+空格和数字,可选择嵌入。的和,和。 '|'作为布尔OR。