Gregory played for West Ham Boys, and was noticed by Charlie Paynter during an English Trophy Final against Preston North End at Upton Park. He joined the groundstaff at West Ham United in 1936. He won an Isthmian League Championship medal with Leytonstone as an amateur, and made his first senior Hammers appearance for the midweek league team in 1938.
After serving with the Essex Regiment and the Royal Air Force during World War II, Gregory made his Football League debut in December 1946, in a home game against Plymouth Argyle.
Gregory played for West Ham for 14 years. He was an ever-present during the 1947-48, 1949-50 and 1952-53 seasons, and was also a regular member of the side that won promotion to Division One in 1957-58.
Gregory gained his only international cap in an England B match against France in 1952.
He played his last game for West Ham in September 1959, a home game against Leeds United, and received a testimonial the following year, against LD Alajuelense of Costa Rica. He totalled 382 league and 24 cup appearances for the club. Upon retirement, he was awarded the Football League long service medal.
Gregory stayed at West Ham after ending his playing career, and went on to coach the reserves, and then the first team, and helped with team administration. He finally left the club in May 1987, after a 51 year association with the Irons.