Unlike the great variation in formulas among the six experience groups, there is only a single formula used to determine how much experience a Pokémon will gain from battle, down below. In this formula:

a is equal to 1 if the fainted Pokémon is wild, and 1.5 if the fainted Pokémon is owned by a Trainer.

t is equal to 1 if the winning Pokémon's OT is its current owner, 1.5 if the Pokémon was gained in a domestic trade, and 1.7 if the Pokémon was gained in an international trade.

b is the base experience yield of the fainted Pokémon's species, listed here.

e is equal to 1.5 if the winning Pokémon is holding a Lucky Egg, and 1 otherwise.

L is the level of the fainted Pokémon.

In Generation V, Lp is the level of the victorious Pokémon.

s is the number of Pokémon that participated in the battle and have not fainted. If any Pokémon in the party is holding an Exp. Share, s is equal to 2, and for the rest of the Pokémon, s is equal to twice the number of Pokémon that participated instead.

If more than one Pokémon is holding an Exp. Share, s is equal to twice the number of Pokémon holding the Exp. Share for each Pokémon holding one.

p is equal to 1 if no Exp. Point Power is active, or else equal to the following depending on the power: Power ↓: 0.5; Power ↓↓: 0.66; Power ↓↓↓: 0.8; Power ↑: 1.2; Power ↑↑: 1.5; Power ↑↑↑, Power S, Power MAX: 2.

In Generation V, the experience gain formula was revamped. The constant divisor of 7 was changed to 5, and a factor was added that took the battling Pokémon's level into account.

Also, a constant of 1 was added to each battle, presumably to prevent a defeated Pokémon from yielding 0 experience due to a very low ratio between levels.

gen 5

gen 4 and down

from bulbapedia