如果变量包含特殊字符,我想进行测试。我想过regular expression
但是我陷入了困境:如何获得所有非数字和字母(小写和大写)以及除了$和_以外的所有#?
答案 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
或使用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;
}