How come this test case is true ?
as . will get matched to 'a' and then * as the description says, Matches zero or more of the preceding element. In this case that is 'a'(previously matched character), so '*' shouldn't get matched to b at all.
isMatch("aa", ".*") = true, this test case makes the right sense, I believe.