나는 전화 번호를 확인하는 데 사용되는 regex
을 가지고 있습니다.replaceAll에 regex 사용
^\\(?(\\d{2,3})\\)?[-(). ]?(\\d{2,3})[-(). ]?(\\d{4})$
(예, 완벽하지는 않지만 실제로는 신경 쓰지 않습니다.) 나는 전화 번호를 다른 문자열로 바꾸기 위해 단지 이것을 사용하고 있습니다. 예를 들어, ###
은 민감한 정보를 제거합니다. 그래서 거짓 긍정은 괜찮습니다.
검색하는 문자열이 전화 번호 일 때 작동합니다.
String PHONE_PATTERN = "^\\(?(\\d{2,3})\\)?[-(). ]?(\\d{2,3})[-(). ]?(\\d{4})$";
String phone = "123-123-1234";
System.out.println(s.replaceAll(PHONE_PATTERN, "###")); //prints '###'
을하지만 주변 텍스트와 함께 작동하지 않습니다 :이 작동
String PHONE_PATTERN = "^\\(?(\\d{2,3})\\)?[-(). ]?(\\d{2,3})[-(). ]?(\\d{4})$";
String phone = "some other text 123-123-1234";
System.out.println(s.replaceAll(PHONE_PATTERN, "###"));
으로 작동하지 않는, 나는 텍스트가 변경되지 않고 인쇄 의미한다. 두 번째 예제 인쇄
some other text ###
이런 어머니. – asteri
정규식을 만들 때 어떻게 자동으로'^'와'&'* 자동 *으로 끝나게 되었습니까? 내가 정규 표현식을 작성할 때, 나는 그 중 하나가 거기에 있어야하는지에 대해 적극적으로 생각해야한다. * "문자열/줄의 시작 부분에서만 일치시켜야 하는가?"* – ADTC
@ADTC 그것은 정규식에 온다. 나는이 사이트에서 내가 발견 한 것을 정리하고 있었다. http://www.zparacha.com/validate-email-ssn-phone-number-using-java-regular-expression/ – jlars62