I recently had a requirement to limit the content author's ability to select items. In this case, they were only allowed to select two items. I love using "TreeListEx" and therefore selected that field type. I knew that I could set validation on fields and went about looking for the built-in validator that would limit the number of selections. . . I didn't find it.
While I was surprised to not find this validator, I thought that surely, someone else smarter than me had mentioned it on the interwebs; I was not disappointed. A quick search yielded a StackOverflow post about it that cited a blog post. In summary, apply a Regex value to the "Validation" field of your field. (Add a helpful "ValidationText" message while you're at it.)
I dutifully copied and pasted the Regex expression into my field and was a little surprised to see an error message while testing the validator:
Well, that didn't go as expected. After a bit of Internet sleuthing on the error, I found that there might be a character (or "characters") in the string that needs to be escaped. I simply changed "^({[^}]+}|?){0,2}$" to "^(\{[^}]+\}|\?){0,2}$" (included the escaping 'backslashes' before the curly brackets and question mark) and was on my way!
Update: And of course as I'm finalizing the research for this post, I see that Ben *actually* did solve this and it can be seen in the screenshot he included, but the Regex text in his post didn't include the escape characters
References:
Stack Overflow Post: https://sitecore.stackexchange.com/questions/1016/what-fieldtype-should-i-use-to-select-one-item-from-a-bucketBen Ramey's blog post cited in the SO post: http://www.benramey.com/2012/06/12/limit-selected-items-on-sitecore-multilist-field/