Unit-тест написан с использованием библиотеки TestNG 5.10. Как запустить тесты TestNG в Eclipse читайте здесь.

Выражение:

<("[^"]*"|'[^']*'|[^'">])*>

Комментарий:

<	  	  # тег начинается с открывающей угловой скобки "<"
(		    #   начало первой группы
"[^"]*"	#	допускается строка, заключенная в двойные кавычки - "string"
|		    #	или
'[^']*'	#	или строка, заключенная в одинарные - 'string'
|		    #	или
[^'">]	#	не может содержать одну одинарную кавычку, двойную и закрывающий тег ">"
)		    #   конец первой группы
*		    # 0 или более
>		    # тег заканчивается закрывающей угловой скобкой ">"

Пример на Java:

package ru.topcode.skillbase.regexp;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class HTMLTagValidator {
 
	private Pattern pattern;
	private Matcher matcher;
 
	private static final String HTML_TAG_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
 
	public HTMLTagValidator() {
		pattern = Pattern.compile(HTML_TAG_PATTERN);
	}
 
	/**
	 * Валидация html-тегов с помощью регулярного выражения
	 * 
	 * @param tag
	 *            html-тег для валидации
	 * @return валидный html-тег, false не валидный html-тег
	 */
	public boolean validate(final String tag) {
		matcher = pattern.matcher(tag);
		return matcher.matches();
	}
}

Unit Test:

package ru.topcode.skillbase.regexp.test;
 
import org.testng.Assert;
import org.testng.annotations.*;
 
import ru.topcode.skillbase.regexp.HTMLTagValidator;
 
public class HTMLTagValidatorTest {
 
	private HTMLTagValidator htmlTagValidator;
 
	@BeforeClass
	public void initData() {
		htmlTagValidator = new HTMLTagValidator();
	}
 
	@DataProvider
	public Object[][] ValidHTMLTagProvider() {
		return new Object[][] { new Object[] { "<b>" },
				new Object[] { "<input value='>'>" },
				new Object[] { "<input value='<'>" }, new Object[] { "<b/>" },
				new Object[] { "<a href='http://www.google.com'>" },
				new Object[] { "<br>" }, new Object[] { "<br/>" },
				new Object[] { "<input value=\"\" id='test'>" },
				new Object[] { "<input value='' id='test'>" } };
	}
 
	@DataProvider
	public Object[][] InvalidHTMLTagProvider() {
		return new Object[][] { new Object[] { "<input value=\" id='test'>" },
				new Object[] { "<input value=' id='test'>" },
				new Object[] { "<input value=> >" } };
	}
 
	@Test(dataProvider = "ValidHTMLTagProvider")
	public void ValidHTMLTagTest(String tag) {
		boolean valid = htmlTagValidator.validate(tag);
		System.out.println("Валидность HTML-тега : " + tag + " , " + valid);
		Assert.assertEquals(true, valid);
	}
 
	@Test(dataProvider = "InvalidHTMLTagProvider", dependsOnMethods = "ValidHTMLTagTest")
	public void InValidHTMLTagTest(String tag) {
		boolean valid = htmlTagValidator.validate(tag);
		System.out.println("Валидность HTML-тега : " + tag + " , " + valid);
		Assert.assertEquals(false, valid);
	}
}

Результат выполнения теста:

Валидность HTML-тега : <b> , true
Валидность HTML-тега : <input value='>'> , true
Валидность HTML-тега : <input value='<'> , true
Валидность HTML-тега : <b/> , true
Валидность HTML-тега : <a href='http://www.google.com'> , true
Валидность HTML-тега : <br> , true
Валидность HTML-тега : <br/> , true
Валидность HTML-тега : <input value="" id='test'> , true
Валидность HTML-тега : <input value='' id='test'> , true
Валидность HTML-тега : <input value=" id='test'> , false
Валидность HTML-тега : <input value=' id='test'> , false
Валидность HTML-тега : <input value=> > , false
PASSED: ValidHTMLTagTest("<b>")
PASSED: ValidHTMLTagTest("<input value='>'>")
PASSED: ValidHTMLTagTest("<input value='<'>")
PASSED: ValidHTMLTagTest("<b/>")
PASSED: ValidHTMLTagTest("<a href='http://www.google.com'>")
PASSED: ValidHTMLTagTest("<br>")
PASSED: ValidHTMLTagTest("<br/>")
PASSED: ValidHTMLTagTest("<input value="" id='test'>")
PASSED: ValidHTMLTagTest("<input value='' id='test'>")
PASSED: InValidHTMLTagTest("<input value=" id='test'>")
PASSED: InValidHTMLTagTest("<input value=' id='test'>")
PASSED: InValidHTMLTagTest("<input value=> >")
 
===============================================
    ru.topcode.skillbase.regexp.test.HTMLTagValidatorTest
    Tests run: 12, Failures: 0, Skips: 0
===============================================

Для углубленного изучения регулярных выражений в Java рекомендую посетить соответствующий раздел The Java Tutorials и изучить книги из раздела RegExp в библиотеке TopCode.