У RichieHindle отличный ответ. Я просто хотел добавить информацию о назначении этого шаблона.
Когда вы проверяете, имеет ли элемент данный CSS-класс, вы хотите избежать ложных срабатываний. Если ваше регулярное выражение было слишком простым, как это
var pattern = new RegExp( className );
Тогда элемент с классом "fooBar" даст положительный результат проверки на класс "foo". Эти граничные подшаблоны существуют здесь, чтобы предотвратить этот тип сценария. Вот демонстрация этого в действии
<div id="test1" class="red big">My class is "red big"</div>
<div id="test2" class="red-and-big green">My class is "red-and-big green"</div>
<textarea id="output" rows="10" cols="60"></textarea>
<script type="text/javascript">
var ta = document.getElementById( 'output' );
var test1 = document.getElementById( 'test1' );
var test2 = document.getElementById( 'test2' );
function hasCssClass( classList, className )
{
var pattern = new RegExp( "(^|\\s+)" + className + "(\\s+|$)" );
return pattern.test( classList );
}
function testElement( elem, className )
{
var has = hasCssClass( elem.className, className )
ta.value += elem.id + ' ' + ( has ? 'has' : 'does not have' ) + ' ' + className + "\n";
}
testElement( test1, 'red' );
testElement( test1, 'green' );
testElement( test1, 'big' );
testElement( test1, 'red-and-big' );
testElement( test2, 'red' );
testElement( test2, 'big' );
testElement( test2, 'green' );
testElement( test2, 'red-and-big' );
</script>