王复臣初为张献忠左军都督。联明抗清后任左都督、讨虏将军,镇守千崖、陇川(今属云南省德宏州)。
永历六年(1652),封东宁侯。吴三桂率清兵入川,王复臣率三万人战于叙州(今四川宜宾),大获全胜,趁机收复重庆,直指成都,吴三桂败退保宁(今四川阆中)。
这时,主帅刘文秀轻敌冒进,不听王复臣的谏言,下令围城。王先璧勇而轻敌,被吴三桂识破破绽,率军偷袭,击溃王先璧。王复臣军被乱兵所扰,又被江水所阻挡,逐渐不支。王复臣被围数重,说:“大丈夫不能生擒名王,岂能被虏所辱!”于是手斩数人,自刎而死。
刘文秀撤围败走,吴三桂却不敢追击,说:“生平未见此恶战,如果刘文秀听取了王复臣的建议,吾军休矣。”