我有狀態,如下正則表達式在字符串允許的字符返回false
以下特殊字符被允許在輸入字符串的限制要求:
. ""(),:;<>@[\]
用於特殊的限制字符是它們只能在包含在引號之間時才能使用。
對於一個簡單的測試「:」輸入字符串中,我寫了如下代碼:
private static void testEmailPattern() {
String email = "Test\":\"mail";
String PATTERN = "[\":\"]*";
boolean isValidEmail = email.matches(PATTERN);
System.out.println("Status: " + isValidEmail);
}
但是這個代碼返回false,而不是真實的。
編輯:閱讀評論後,我修改了這個代碼,但它仍然顯示錯誤。
我修改我的代碼和下面進行的:
public class TestFeatures {
private Pattern pattern;
private Matcher matcher;
private static final String PATTERN = "[.*\":\".*]*";
public TestFeatures() {
initEmailPattern();
}
private void initEmailPattern() {
pattern = Pattern.compile(PATTERN);
}
public boolean validate(final String hex) {
matcher = pattern.matcher(hex);
return matcher.matches();
}
/**
* @param args
*/
public static void main(String[] args) {
testEmailPattern();
}
private static void testEmailPattern() {
String email = "Test\":\"[email protected]";
TestFeatures thisClazz = new TestFeatures();
boolean isValidEmail = thisClazz.validate(email);
System.out.println("Status: " + isValidEmail);
}
}
用圓括號替換括號,並且不要使用'matches()'(或者在正則表達式的開始和結尾處加上'。*')。 – sp00m
我的家庭作業感覺刺痛! – christopher
'matches':「[t]確定該字符串**是否匹配給定的正則表達式」。 – usr2564301