특정 문자가 있는지 확인하여 문자열이 유효한지 유효하지 않은 지 테스트하고 있습니다. 포함하는 문자열; #/% = | + \ "<는> 내가 현재 자바에서 구현 다음했습니다. 유효하지 않은 것으로 간주,하지만 난 더 우아한 정규식 솔루션을 선호하는 것입니다.정규식을 사용하여 유효/유효하지 않은 문자열을 테스트하십시오.
내가 무슨 짓을했는지public boolean isStringValid(String name) {
if ( name.contains(";")
|| name.contains("#")
|| name.contains("/")
|| name.contains("%")
|| name.contains("=")
|| name.contains("|")
|| name.contains("+")
|| name.contains("\\")
|| name.contains("\"")
|| name.contains("<")
|| name.contains(">")) {
return false;
}
else {
return true;
}
}
는 다음에 변경,
public boolean isNameValid(String name) {
return !Pattern.matches(".*(;|#|/|%|=|\\||\\+|\\\\|\"|<|>)+.*", name);
}
하지만. 모든 자바 이스케이프 문자에 추가하기 전에 원래 정규식 문자열은 다음과 같다,
.*(;|#|/|%|=|\||\+|\\|"|<|>)+.*
는 문자 c를 사용하여 바로 정규식 문자열을 얻이 수없는 것 필자의 경우 "d @ vik"과 같은 이름이 유효한 것으로 간주되기 때문에 [A-z]와 같은 lasses는 옵션으로 보이지 않습니다.
무언가를 확인하고 싶을 때, 무효의 경우보다 유효성을 확인하는 것이 좋습니다. – popfalushi
@popfalushi 나는 보통 당신과 동의 할 것이지만, 나는 주어진 사양에 기반한 자동화 된 테스트 스크립트를 작성하고있다. 개발자들이 염두에 두었던 것을 누가 압니까? ;) – hitsuyashi