Having your clients write regular expressions...

Check out ez_where,
http://www.brainspl.at/articles/2006/06/30/new-release-of-ez_where-plugin

It might help with you range problem

or you could do

/(1[5-9]|[2-8]\d|90)/ which might not be the best way of matching that but i
believe it'll work

Let them provide the SQL where clauses?

It could be a Very Bad Idea, but either way the plugin's really nifty.