Java Regex匹配ASCII字符

时间:2011-02-21 21:02:37

标签: java regex

什么正则表达式匹配java中的任何ASCII字符?

我已经尝试过了:

^[\\p{ASCII}]*$

但发现它与我想要的很多东西(如空格,括号等等)不匹配。我希望避免以下列格式明确列出所有127个ASCII字符:

^[a-zA-Z0-9!@#$%^*(),.<>~`[]{}\\/+=-\\s]*$

5 个答案:

答案 0 :(得分:30)

第一次尝试几乎是正确的

"^\\p{ASCII}*$"

答案 1 :(得分:8)

我从未使用\\p{ASCII},但我使用过^[\\u0000-\\u007F]*$

答案 2 :(得分:1)

对于JavaScript,它将是/^[\x00-\x7F]*$/.test('blah')

答案 3 :(得分:1)

如果您只想要可打印的ASCII字符,可以使用^[ -~]*$ - 即空格和波浪号之间的所有字符。

https://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart

答案 4 :(得分:0)

我认为有关从具有ASCII和特殊字符的原始字符串中获取ASCII字符的问题......

public String getOnlyASCII(String raw) {
    Pattern asciiPattern = Pattern.compile("\\p{ASCII}*$");
    Matcher matcher = asciiPattern.matcher(raw);
    String asciiString = null;
    if (matcher.find()) {
        asciiString = matcher.group();
    }
    return asciiString;
}

上面的程序将删除非ascii字符串并返回字符串。感谢@Oleg Pavliv的模式。

例如:

raw = + 919986774157

asciiString = +919986774157