我們要求社會安全號碼的格式必須是 「xxxx-xx-nnnn」(x是文字,n代表數字,如有效值是xxx-如果第二個是假的XX-5444。使用pattern.compile進行社會安全號碼
我試圖用Java模式和匹配,所以我下面
String SSN_REGEXP = "xxx-xx-[0-9][0-9][0-9][0-9]";
...
assertTrue("SSN " + ssn + " is not of format " + SSN_REGEXP, Pattern.compile(SSN_REGEXP).matcher(ssn).matches());
assertTrue將打印的第一個參數。在這種情況下,如果模式沒有比賽
我正在此:
java.lang.AssertionError: SSN xxx-xx-5444 is not of format xxx-xx-[0-9][0-9][0-9][0-9]
正如你所看到的,SSN是「xxx-xx-5444」。那麼爲什麼這個失敗? 我也試過如下:
"^xxx-xx-[0-9][0-9][0-9][0-9]$"
"xxx\\-xx\\-[0-9][0-9][0-9][0-9]"
在Java中,你必須雙反斜線我想是因爲有間接的兩個層面 - 說的無效逸出。
那麼,爲什麼正則表達式不起作用?
X應該是[A-ZA-Z]什麼 – njzk2
你確定你發送的字符串這樣的 「XXX-XX-5444」?我試着在我的機器上,JUnit中的這個斷言很好,沒有錯誤。看起來你在xxx-xx之前有空格字符。 –
這是對的。我只需要做一個ssn = ssn.trim(); – Tony