I am attending a wedding soon and the dress code is "formal attire". Before you ask, I have confirmed that formal does not mean tuxedo/black tie. They put formal because a large number of attendees are in the military and they want them in their formal dress. Suit and tie is acceptable for everyone else.

I'll be wearing a classic navy suit and tie, but I'm wondering if I can get away with a non-white shirt. Would it be acceptable to wear a light blue or patterned shirt (something like herringbone or small grid checks)? Or do I need to just go with a plain white dress shirt?