用空字符串替换所有非字母数字字符

Ale*_*mes 184 java regex non-alphanumeric

我尝试使用这个但没有工作 -

return value.replaceAll("/[^A-Za-z0-9 ]/", "");
Run Code Online (Sandbox Code Playgroud)

Mir*_*uta 231

使用[^A-Za-z0-9].

注意:删除空格,因为通常不会将其视为字母数字.

  • 字符类末尾的空格也不应该. (10认同)
  • @William - 很遗憾PHP正在获得PCRE的功劳 (10认同)
  • 他可能习惯用PHP编程. (6认同)

And*_*ffy 123

尝试

return value.replaceAll("[^A-Za-z0-9]", "");
Run Code Online (Sandbox Code Playgroud)

要么

return value.replaceAll("[\\W]|_", "");
Run Code Online (Sandbox Code Playgroud)

  • 使用下划线,`return value.replaceAll("\\ W","");` (3认同)

And*_*ess 60

您应该知道,[^a-zA-Z]它将替换字符范围AZ/az中不属于自身的字符.这意味着特殊字符,如é,ß等,或西里尔字符和诸如将被删除.

如果不需要替换这些字符,请使用预定义的字符类:

 str.replaceAll("[^\\p{IsAlphabetic}\\p{IsDigit}]", "");
Run Code Online (Sandbox Code Playgroud)

PS:\p{Alnum}没有达到这个效果,它的作用相同[A-Za-z0-9].

  • 非常感谢这篇文章 - 这对我来说非常有用.另外,我相信这是问题的实际答案.拉丁字母不是世界上唯一的! (9认同)
  • 实际上,规定的正则表达式会将“ ^”视为有效字符,因为只有“ ^”的首次出现会否定选择的含义。`[^ \\ p {IsAlphabetic} \\ p {IsDigit}]`效果很好。 (2认同)

eri*_*son 48

return value.replaceAll("[^A-Za-z0-9 ]", "");
Run Code Online (Sandbox Code Playgroud)

这将留下空间不变.我认为这就是你想要的.否则,从正则表达式中删除空格.


sau*_*rav 21

你也可以尝试这个更简单的正则表达式:

 str = str.replaceAll("\\P{Alnum}", "");
Run Code Online (Sandbox Code Playgroud)

  • 或者,保留空格:`str.replaceAll("[^ \\ p {Alnum} \\ s]","")` (2认同)

aby*_*byx 10

Java的正则表达式不需要/在正则表达式周围放置正斜杠()或任何其他分隔符,例如,与其他语言(如Perl)相反.


zne*_*neo 8

我创建了这个方法来创建文件名:

public static String safeChar(String input)
{
    char[] allowed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray();
    char[] charArray = input.toString().toCharArray();
    StringBuilder result = new StringBuilder();
    for (char c : charArray)
    {
        for (char a : allowed)
        {
            if(c==a) result.append(a);
        }
    }
    return result.toString();
}
Run Code Online (Sandbox Code Playgroud)

  • 这是非常蛮力的.正则表达式是OP的情况. (4认同)
  • 哈,有人真的能很好地使用正则表达式吗?;) (2认同)

Gal*_*one 5

解:

value.replaceAll("[^A-Za-z0-9]", "")

说明:

[^abc] 当插入符号^作为方括号内的第一个字符出现时,它会否定该模式。该模式匹配除a或b或c之外的任何字符。

将关键字视为两个功能:

  • [(Pattern)] = match(Pattern)
  • [^(Pattern)] = notMatch(Pattern)

此外,关于模式:

  • A-Z = all characters included from A to Z

  • a-z = all characters included from a to z

  • 0=9 = all characters included from 0 to 9

因此它将替换模式中未包含的所有字符