请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配`
function match(s, pattern,i=0,j=0)
{
if(i>s.length&&j>pattern.length){
//都清空了
return true;
}if(i<s.length&&j>pattern.length){
//没清空,但是匹配符清空了
return false;
}
//看后一位是否有*
if(pattern[j+1]!='*'){
if(s[i]==pattern[j]||(s[i]&&pattern[j]==".")){
return match(s,pattern,++i,++j);
}else{
return false
}
}else{
//有*
if(s[i]==pattern[j]||(s[i]&&pattern[j]=='.')){
//如果字符匹配
// 用当前字符匹配*后的字符 或者用当前规则匹配前一个字符
return match(s, pattern,i,j+2)||match(s,pattern,i+1,j)
}else{
//字符不匹配
// 用当前字符匹配*后的字符
return match(s,pattern,i,j+2)
}
}
}