5
我有以下的正則表達式:正則表達式變音符號
String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$";
的正常工作對我來說,只是,它不允許任何UTF-8變音符號(A A A A I I S式T T) 。
我只需要我目前的正則表達式接受其中的變音符號,除了它已經做了。
任何幫助表示讚賞。謝謝。
我有以下的正則表達式:正則表達式變音符號
String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$";
的正常工作對我來說,只是,它不允許任何UTF-8變音符號(A A A A I I S式T T) 。
我只需要我目前的正則表達式接受其中的變音符號,除了它已經做了。
任何幫助表示讚賞。謝謝。
您需要查看POSIX character classes來捕捉這些內容。可悲的是,Java正則表達式不支持語言特定的POSIX類,但也許\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
或\p{Print} A printable character: [\p{Graph}\x20]
將適合。
索林建議的最佳擬合可能是\p{L}
(Letter)。
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");
}
}
}
這適用於我。
或者,更好的是,[\ p {L}]表示字母。 – Sorin 2012-04-17 09:59:23
你說得對,我會補充一點。 – 2012-04-17 10:02:52
嗯..我用\ p {L}嘗試過,但它仍然無法工作。到目前爲止唯一的工作是「^ [\\wĂăÂâŢţ0-9+ ,.' - ] {1,」+ maxCharacters +「} $」但我不知道這是多麼的好。對此有何想法? – Fofole 2012-04-17 10:08:45