如何找到数字,字母和$ _#以外的字符?

时间:2017-12-15 08:56:29

标签: java

如果变量包含特殊字符,我想进行测试。我想过regular expression但是我陷入了困境:如何获得所有非数字和字母(小写和大写)以及除了$和_以外的所有#?

3 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式[^0-9a-zA-Z#_$]+

boolean check = str.replaceAll("[^0-9a-zA-Z#_$]+", "").length() < str.length();

如果true,那么输入包含的字符不同于0到9和a到z和A到Z和$和_和#

我们的想法是,从字符串中替换所有非数字和字母(小写和大写)$_#,然后使用原始字符串检查长度,如果它少了那么还有其他字符没有。

它将返回:

"Hello123#_$ )"   -> false
"Hello123_$#"     -> true

简单的解决方案是:

boolean check = str.matches("[0-9a-zA-Z#_$]+");

返回true,如果输入只包含数字和字母(小写和大写)和$以及_# 一个或更多时间

答案 1 :(得分:1)

rule "fairAssignmentCountPerTeam" when accumulate( $t : Team() and accumulate( TeamAssignment(team == $t); $assignmentCount : count() // This could be a sum of hours too ); $result : loadBalance($assignmentCount) ) then scoreHolder.addMediumConstraintMatch(kcontext, - (int) $result.getMeanDeviationSquaredSumRootMillis()); end 将从str

中删除所有非数字和Unicode字母(小写和大写)

或使用str = str.replaceAll("[\\d\\p{L}]", "")查找是否有非数字非字母和非$ _和#?在str

答案 2 :(得分:-1)

以下是JavaScript的代码段。我认为这将解决你的目的。

var format = /[@$_]+/;

if(format.test('abcd@$_')){
    alert("true");
    return true;
} else {
    alert("false");
    return false;
}