2015-10-08 40 views
7

Tôi có một chuỗi đầu vào mà trông giống như bất kỳ những điều sau đây:Java Regex để che dấu chuỗi chữ và số và hiển thị 4 chữ số cuối

  • Z43524429
  • 46D92S429
  • 3488DFJ33

Về cơ bản các chuỗi có thể chứa ký tự chữ cái hoặc chữ số. Tuy nhiên nó không thể chứa các ký hiệu, chỉ là chữ cái và số. Tôi muốn che giấu nó để nó trông như thế này:

  • ***** 4429
  • ***** S429
  • ***** FJ33

tôi đã tìm ở khắp mọi nơi để tìm một ví dụ mã java sử dụng regex để che giấu điều này. Tôi đã tìm thấy this post trên ngăn xếp nhưng giả định rằng đầu vào hoàn toàn là một số.

Tôi đã điều chỉnh regex thành /\w(?=\w{4})/g để bao gồm các ký tự. Dường như hoạt động here. Nhưng khi tôi cố gắng thực hiện nó trong java nó không hoạt động. Đây là dòng trong mã java của tôi:

String mask = accountNumber.replace("\\w(?=\\w{4})", "*"); 

Mặt nạ kết thúc bằng giống như tài khoảnNumber. Vì vậy, rõ ràng là regex không hoạt động. Có suy nghĩ gì không?

+6

Sử dụng 'replaceAll' cho regex – Reimeus

+0

Nếu chuỗi có cùng định dạng, bạn không cần regex. Xây dựng một chuỗi mới bắt đầu bằng năm '*' và kết thúc bằng bốn ký tự cuối cùng của chuỗi gốc. –

+0

Cảm ơn câu hỏi BTW. Do đó tôi thấy Regex cho String masking. Rất hữu ích .. – Jigar

Trả lời

5

Bạn đang sử dụng replace, không sử dụng cụm từ thông dụng.

Hãy thử replaceAll.

Các vấn đề liên quan