Как Вы читаете это регулярное выражение JavaScript?

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-й). Следовательно, a null возвращается.

5
задан Wiktor Stribiżew 8 October 2019 в 23:38
поделиться