Twibap
146
2018-11-07 18:54:09
2
625

정규식 사이트에서는 통과되는데 안드로이드에서는 통과되지 않고 있습니다.


답답하네요.

정규식 사이트에서는 정규식에 맞는 값이라고 나오는데,

안드로이드에서는 계속 False를 반환합니다.


로그를 찍어 나오는 값을 사이트에 테스트해봐도 잘 통과합니다.

0x까지 42글자 해야되나 싶어서 정규식 길이 조건을 42로 바꿔도 마찬가지 입니다.


Edittext edittext = findviewbyid(R.id.edittext);
String word = edittext.getText().toString();

if(word.matches("/^0x[a-fA-F0-9]{40}$/g" );
    return true;
else {
    log.d(TAG, "result : "+false+" -> "+word);
    return false
}


0
  • 답변 2

  • antop
    1k
    2018-11-07 19:41:22



    언어마다 약간 사용법이 다릅니다.

    public class Test {
        public static void main(String[] args) {
            boolean bool1 = valid1("0x52908400098527886E0F7030069857D2E4169EE7");
            System.out.println(bool1); // false
    
            boolean bool2 = valid2("0x52908400098527886E0F7030069857D2E4169EE7");
            System.out.println(bool2); // true
        }
    
        public static boolean valid1(String word) {
            if (word.matches("/^0x[a-fA-F0-9]{40}$/g")) {
                return true;
            } else {
                return false;
            }
        }
    
        public static boolean valid2(String word) {
            if (word.matches("^0x[a-fA-F0-9]{40}$")) {
                return true;
            } else {
                return false;
            }
        }
    
    }


  • Twibap
    146
    2018-11-07 19:52:06

    어쩐지... 손으로 옮겨 쓰다가 몇시간동안 삽질 ㅠㅡㅠ

    말씀해주신 방법 진작에 써보긴 했었는데 "word.isEmpty() && "을 if문에 같이 넣어놨더라구요.

    한번에 하나씩 해야겠습니다.

    감사합니다!!!

  • 로그인을 하시면 답변을 등록할 수 있습니다.