Also, this is my updated code so far that seems to get me most of the roads I need. There are a few extra roads included (e.g., gravel roads in a marsh) that I figured I could edit out in another application if necessary. If you have any further suggestions for ways to improve my code, however, I would welcome your feedback.

[out:json][timeout:4000][bbox:{{bbox}}]; ( way["highway"~"^(motorway|trunk|primary|secondary|tertiary|residential)$"] ["surface"!="^(unpaved|compacted|gravel|dirt|ground)$"] ["lanes"!~"^(<2)$"]; ); out geom;