Joe Peck wrote: > The problem is I don't want it to accept things like: > "[joe] hello [joe] how are [/joe] you" > where there are two opening tags before a closing tag is reached. > Similarly, I don't want to accept something like: > "hey [joe] it's hot today[/joe] where [joe] is the ac" > where there is one correct pair but then an opening tag without a > closing one. If I am reading your specs correctly: /^(((?!\[joe\]).)*(\[joe\]((?!\[joe\]).)+\[\/joe\])){1,3}((?!\[joe\]).)*$/ cheers, andrew -- Posted via http://www.ruby-forum.com/.