繁体   English   中英

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

[英]check if a string only contains specified characters

我想检查一个字符串只包含字母, 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或更多。

采用

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM