all-threads-bot

Frontender`s Spectre

JavaScript | Практика #176 | Регулярные выражения | ★★★★☆

18 апреля 2023 г., 12:23

<p><strong>Ответ: <code>true, false</code></strong></p> <p>Данный код использует конструктор <code>RegExp()</code> для создания регулярного выражения (регэкспа), предназначенного для поиска строк с указанным шаблоном.</p> <p>В данном случае, регэксп '<code>Foo B</code>' означает поиск в строке '<code>Foo Bar</code>' наличия подстроки '<code>Foo B</code>', при этом '<code>g</code>' означает глобальный поиск (т.е. поиск всех вхождений), а '<code>i</code>' - регистронезависимый поиск.</p> <p>Первый вызов <code>re.test('Foo Bar')</code> возвращает <code>true</code>, так как '<code>Foo B</code>' является подстрокой '<code>Foo Bar</code>'. Обновляет свойства объекта регулярного выражения.</p> <p>Второй вызов <code>re.test('Foo Bar')</code> возвращает <code>false</code>, так как после первого успешного поиска регэксп начинает искать вхождения '<code>Foo B</code>' только после первого найденного вхождения '<code>Foo Bar</code>', которое уже было найдено в первом вызове.</p> <p>Как и при вызове метода <code>exec()</code> (или при совместном с ним вызове), метод <code>test()</code>, вызванный несколько раз на одном и том же экземпляре глобального регулярного выражения, будет начинать проверку с конца предыдущего сопоставления.</p>

<p><strong>Ответ: <code>true, false</code></strong></p> <p>Данный код использует конструктор <code>RegExp()</code> для создания регулярного выражения (регэкспа), предназначенного для поиска строк с указанным шаблоном.</p> <p>В данном случае, регэксп '<code>Foo B</code>' означает поиск в строке '<code>Foo Bar</code>' наличия подстроки '<code>Foo B</code>', при этом '<code>g</code>' означает глобальный поиск (т.е. поиск всех вхождений), а '<code>i</code>' - регистронезависимый поиск.</p> <p>Первый вызов <code>re.test('Foo Bar')</code> возвращает <code>true</code>, так как '<code>Foo B</code>' является подстрокой '<code>Foo Bar</code>'. Обновляет свойства объекта регулярного выражения.</p> <p>Второй вызов <code>re.test('Foo Bar')</code> возвращает <code>false</code>, так как после первого успешного поиска регэксп начинает искать вхождения '<code>Foo B</code>' только после первого найденного вхождения '<code>Foo Bar</code>', которое уже было найдено в первом вызове.</p> <p>Как и при вызове метода <code>exec()</code> (или при совместном с ним вызове), метод <code>test()</code>, вызванный несколько раз на одном и том же экземпляре глобального регулярного выражения, будет начинать проверку с конца предыдущего сопоставления.</p>
Ниже представлено пояснение.

Ответ: true, false

Данный код использует конструктор RegExp() для создания регулярного выражения (регэкспа), предназначенного для поиска строк с указанным шаблоном.

В данном случае, регэксп 'Foo B' означает поиск в строке 'Foo Bar' наличия подстроки 'Foo B', при этом 'g' означает глобальный поиск (т.е. поиск всех вхождений), а 'i' - регистронезависимый поиск.

Первый вызов re.test('Foo Bar') возвращает true, так как 'Foo B' является подстрокой 'Foo Bar'. Обновляет свойства объекта регулярного выражения.

Второй вызов re.test('Foo Bar') возвращает false, так как после первого успешного поиска регэксп начинает искать вхождения 'Foo B' только после первого найденного вхождения 'Foo Bar', которое уже было найдено в первом вызове.

Как и при вызове метода exec() (или при совместном с ним вызове), метод test(), вызванный несколько раз на одном и том же экземпляре глобального регулярного выражения, будет начинать проверку с конца предыдущего сопоставления.