Các giải pháp trên là ưu việt hơn, đặc biệt nếu sử dụng Java và gặp phải nhiều số hơn 10 chữ số như tiền tố mã quốc tế hoặc các số máy lẻ bổ sung. Giải pháp này là cơ bản (tôi là người mới bắt đầu trong thế giới regex) và được thiết kế với số Điện thoại Hoa Kỳ và chỉ hữu ích cho các chuỗi chỉ có 10 số với một số ký tự định dạng hoặc có lẽ không có ký tự định dạng nào (chỉ 10 số ). Vì vậy, tôi sẽ đề xuất giải pháp này chỉ dành cho các ứng dụng bán tự động. Cá nhân tôi thích lưu trữ số chỉ dưới dạng 10 số mà không cần định dạng ký tự, nhưng cũng muốn có thể chuyển đổi hoặc xóa số điện thoại sang định dạng tiêu chuẩn mà mọi người bình thường và ứng dụng / điện thoại sẽ nhận ra ngay lập tức theo ý muốn.
Tôi xem qua bài đăng này đang tìm kiếm thứ gì đó tôi có thể sử dụng với ứng dụng dọn dẹp văn bản có khả năng PCRE Regex (nhưng không có chức năng java). Tôi sẽ đăng bài này ở đây cho những người có thể sử dụng một giải pháp Regex thuần túy đơn giản có thể hoạt động trong nhiều trình soạn thảo văn bản, trình dọn dẹp, trình mở rộng hoặc thậm chí một số trình quản lý khay nhớ tạm. Cá nhân tôi sử dụng Sublime và TextSoap. Giải pháp này được tạo ra cho Text Soap vì nó nằm trong thanh menu và cung cấp menu thả xuống, nơi bạn có thể kích hoạt các hành động thao tác văn bản trên những gì được chọn bởi con trỏ hoặc những gì trong khay nhớ tạm.
Cách tiếp cận của tôi về cơ bản là hai thay thế / tìm kiếm và thay thế regexes. Mỗi tìm kiếm thay thế và thay thế bao gồm hai regex, một để tìm kiếm và một để thay thế.
Thay thế / Tìm kiếm & Thay thế # 1
- Thay thế / tìm kiếm & thay thế đầu tiên tách các số không phải số từ một số có 10 chữ số khác thành một chuỗi 10 chữ số.
Regex thay thế / tìm kiếm đầu tiên :\D
- Chuỗi tìm kiếm này khớp với tất cả các ký tự không phải là chữ số.
Thay thế đầu tiên / Thay thế Regex: "" (không có gì, thậm chí không phải dấu cách)
- Để trống hoàn toàn trường thay thế, không được tồn tại khoảng trắng kể cả khoảng trắng. Điều này sẽ dẫn đến việc xóa tất cả các ký tự không phải chữ số phù hợp. Bạn nên sử dụng 10 chữ số + ký tự định dạng trước khi thực hiện thao tác này và sử dụng các ký tự định dạng không có 10 chữ số.
Thay thế / Tìm kiếm & Thay thế # 2
- Việc thay thế thứ hai / Tìm kiếm và thay thế tìm kiếm một phần của nhóm chụp hoạt động cho mã vùng
$1
, một nhóm chụp cho tập thứ hai trong ba số $2
, và nhóm chụp cuối cùng cho tập cuối cùng của bốn số $3
. Regex cho phần thay thế của thao tác sẽ chèn định dạng số điện thoại của Hoa Kỳ vào giữa nhóm chữ số được ghi lại.
Thay thế thứ hai / Tìm kiếm Regex:(\d{3})(\d{3})(\d{4})
Thay thế thứ hai / Thay thế Regex:\($1\) $2\-$3
Các dấu chéo ngược \
thoát các ký tự đặc biệt (
, )
,
(<-whitespace), và -
vì chúng ta đang chèn chúng giữa số bị bắt của chúng tôi trong nhóm chụp $1
, $2
, & $3
cho Mỹ mục đích định dạng số điện thoại.
Trong TextSoap, tôi đã tạo một trình dọn dẹp tùy chỉnh bao gồm hai hành động hoạt động thay thế, vì vậy trong thực tế, nó giống như thực thi một tập lệnh. Tôi chắc rằng giải pháp này có thể được cải thiện nhưng tôi mong đợi độ phức tạp sẽ tăng lên một chút. Một phiên bản cải tiến của giải pháp này được hoan nghênh như là một trải nghiệm học hỏi nếu bất kỳ ai muốn thêm vào điều này.