!(/<\s*br/i.test(str))
- для первого условия. Не стоит забывать, что могут быть паразитные пробелы между < и br, которые интерпретатор прощает, а вот регулярное выражение не простит... А отрицание в самом начале позволяет несколько упростить регулярное выражение. И не забываем про регистр.
((!(/br\s*>/.test(str))) || (!(/br\s*\/\s*>/.test(str))) || (!(\/\s*>/.test(str))))
- это для второго случая. Если не можешь написать большое сложное выражение, пиши несколько маленьких более простых.