2012-04-17 25 views
5

Tôi có regex sau:dấu Regex

String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$"; 

mà hoạt động tốt đối với tôi, ngoại trừ, nó không cho phép bất kỳ UTF-8 bỏ dấu vào nó (A A A A I I S S T T) .

Tôi chỉ cần regex hiện tại của mình chấp nhận dấu phụ bên cạnh những gì nó đã làm.

Mọi trợ giúp đều được đánh giá cao. Cảm ơn.

Trả lời

6

Bạn cần phải xem xét số POSIX character classes để xem. Đáng buồn là Java Regex không hỗ trợ các lớp POSIX cụ thể về ngôn ngữ nhưng có thể \p{Graph} A visible character: [\p{Alnum}\p{Punct}] hoặc \p{Print} A printable character: [\p{Graph}\x20] sẽ phù hợp.

Phù hợp nhất theo đề xuất của Sorin có thể là \p{L} (Thư).

import java.util.regex.Pattern; 

public class Regexer { 

    public static void main(String[] args) { 
     int maxCharacters = 100; 
     String data = "Ă ă Â â Î î Ș ș Ț ț"; 
     String pattern = "^[\\p{L}0-9+,. '-]{1," + maxCharacters + "}$"; 

     Pattern p = Pattern.compile(pattern); 

     if (p.matcher(data).matches()) { 
      System.out.println("Hit"); 
     } else { 
      System.out.println("No"); 
     } 

    } 
} 

Điều này phù hợp với tôi.

+6

Hoặc, thậm chí tốt hơn, [\ p {L}] có nghĩa là thư. – Sorin

+0

Bạn nói đúng, tôi sẽ thêm cái này. –

+0

Hm .. Tôi đã thử với \ p {L} và nó vẫn không hoạt động. Điều duy nhất mà làm việc cho đến nay là "^ [\\ wĂăÂâÎîȘșȚț0-9 +, '-] {1," + maxCharacters + "} $" nhưng tôi không biết làm thế nào ok này được. Suy nghĩ về điều này? – Fofole

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