var pattern = /^0+$/;
Я думаю, это:
«Посмотрите как начало, так и конец строки, и если в начале и конце есть шаблон из одного или нескольких нулей, верните этот шаблон».
Я уверен, что это неправильно, потому что, когда я запускаю выражение с этой строкой:
var string = "0000009000000";
Это приходит null
.
Так что же на самом деле говорит? И пока я спрашиваю, что / как JavaScript учитывает начало, середину и конец строки?
ОБНОВЛЕНИЕ № 1: Спасибо за ответы! Я думаю, что понимаю это сейчас. Моя путаница проистекала из того факта, что я представляю строку как начало, середину и конец. Как это:
[начало] [средний] [конец]
Другими словами, для приведенной выше строки следующие выражения работают так, как я ожидаю:
/^0+/;
возвращает "000000" (шаблон из одного или нескольких нулей в начале строки)
и
/0+$/
; возвращает «000000» (шаблон из одного или нескольких нулей в конце строки)
ОБНОВЛЕНИЕ № 2: Я перевесил все ответы на этот вопрос, потому что они все полезны, и я собрал ответы в один большой большой:
С учетом следующего кода JavaScript:
var string = "0000009000000";
var regExp = /^0+$/;
alert(regExp.exec(string));
Частично это звучит так:
"Если точный символ (символы), за которым следует модификатор ^ и которому предшествует модификатор $ в регулярном выражении, не ОДНОВРЕМЕННО сидят в первой позиции (ях) строки И в последней позиции (ях) строки (т. е. они не являются единственным символом (ами) в строке), затем возвращают null
. Иначе, возвращают символ (ы). "
Другими словами, допустим, что данная строка состоит из шести нулей «000000». Это приводит к совпадению, потому что точно такая же группа символов «0» находится в ОБА первых позициях ( 1-й 2-й 3 * 4-й 5-й 6-й) И последних позициях (1-й 2-й 3 4-й 5-й 6-й ) строки.
Однако в исходной данной строке есть шесть нулей, за которыми следуют девять, а затем шесть нулей («0000009000000»). Теперь шесть нулей в первых позициях строки (1-й, 2-й, 3-й, 4-й, 5-й, 6-й) НЕ являются точно такими же шестью нулями, сидящими в последних позициях строки (8-й, 9-й, 10-й, 11-й, 12-й) 13). Следовательно, null
возвращается.