检查字符串是否只包含指定的字符

时间:2017-04-11 20:06:07

标签: java regex

我想检查字符串是否只包含字母a-zA-Z,数字0-9和运算符(+=-*/^)

例如,允许使用以下表达式:3 + 5(x^2)

例如,以下表达式将允许3 $+ 5(x^2)

我会使用匹配功能来执行此操作吗?

我试过了:

// contains only operators, numbers, or letters
if(!exp.matches("[(+=-*/^)a-zA-Z0-9]")) { 
    return false;
}

我也试过逃避星号,但它没有用。

1 个答案:

答案 0 :(得分:3)

您应该已转义-或将其放在角色类的开头/结尾,否则会创建范围。请注意,[=-*]范围无效

enter image description here

此外,您需要一个量词+来匹配1个或多个字符,*以匹配0或更多。

使用

if(!exp.matches("[a-zA-Z0-9+=*/^()-]+")) { 
        return false;
}

如果您不需要匹配(),请将其从字符类中删除。

此外,由于String#matches()需要完整的字符串匹配,因此不需要在正则表达式的开头和结尾处使用锚点。