Перейти к содержимому

JavaScript — Регулярные выражения

URL-1 источник — Регулярные выражения developer.mozilla

URL-2.1 источник (Регулярные выражения Javascript-джедай #28)
URL-2.2 источник (Регулярные выражения Javascript-джедай #29)

Сайт для отладки регулярных выражений

https://regexr.com/

https://regexper.com/



ссылка на статью в моем блоге

Регулярная строка пишиться между символами / /
Послених пишиться флаг в любой последовательности, важно лиш есть он или нет.

Например:
/a.{2,10}e/g
если флаг установлен, то
g (глобально) — поиск будет искаться много раз, а иначе только один раз.
i (верхний или нижний регистор не имеет знагение) — небудет разницы символ в верхнем или нижнем регистре.
m (мульти) — это значит что начало и конец есть у каждой строки, а иначе начало и конец только в начале всего текта и в его конце. Этот флаг важен когда в реглярном выражении используеться символ «^» или «$».

y Experimental«липкий» поиск; сопоставление в целевой строке начинается с индекса, на который указывает свойство lastIndex этого регулярного выражения (и не пытается сопоставиться с любого более позднего индекса).

? — этот символ в том числе делает повторения жадными? Без знака «?» будет не жадными. Жадное значит поис продолжаеться до первого возможного символа, а не жадное до максимально последнего на строке.
? в после скобок () указывает что строка может быть а может и не быть, фактически это значит тоже самое что и {0,1}

Наприме:

Нужно еще учитывать что мы имеем запоминающую группу

и чтобы ее отключить нужно поставить после скобки (?:
тогда
/java(?:script)?/gim


Например:
для стори поиска «your career. Maybe you wante t travel internationally or study abroad.»
при регулярной строке /a.{2,10}e/g


Результат:

/a.{2,10}?e/g
Результат:




Вперед смотрящее утверждение и назад смотрящее утверждение.

это вперед смотрящее утверждение

(?:x)
x(?=y)
x(?!y)

это назад смотрящее утверждение — в языке «» такой возможности не предусмотрено.


Запоминающие группы.
Например чтобы найти все email-ы в тексте можно написать такое регулярное выражение.
/(\b\w+)@(\w+.\w+\b)/gim


регулярное выражение чтобы находить URL
/(?:(\w+):\/\/)?([^/]+)(.+)?/gim


//https://youtu.be/CAXBO9jOXFA?t=358

var input = document.getElementsByClassName(‘input’)[0],
output = document.getElementsByClassName(‘output’)[0],
voc = {
name: ‘Sorax’,
title: ‘JavaScript Tuts’,
resource: ‘YouTube’
};

input.addEventListener(‘keyup’, function(){
output.innerHTML = this.value.replace(/{{(\w*)}}/g, «$1«);
}, false);

$1 — значение в первом запомнинании, т.е. то что в первых скобках ()

Это регулярное выражение


!!! Важный момент
_1.1. Прежде всего при использовании метода «.exec» нужно чтобы для регулярного выражения был задан флаг «g» иначе индекс не будет меняться.
_1.2. строку «c_exec = MyRe.exec(content)» эта строка должна повторяться каждый раз чтобы получить обносленное значение инжекса (lastIndex) иначе значение быдет на момент присвоения, посколку в переменной (c_exec) копия данных, а изменения происходят в обекте (MyRe.exec(content)).

  <div>
  <span id="sentence">
	 123 If	 you’ve picked up this 
  book, 
  chances.  _ If s
  
  </span>
  </div>


  <script>

	MyRe = /If/g

	c_exec = MyRe.exec(content)
	console.log("c_exec_1: ", c_exec);
	console.log("MyRe_1.lastIndex: ", MyRe.lastIndex);

	c_exec = MyRe.exec(content)
	console.log("c_exec_2: ", c_exec);
	console.log("MyRe_1.lastIndex: ", MyRe.lastIndex);

	c_exec = MyRe.exec(content)
	console.log("c_exec_3: ", c_exec);
	console.log("MyRe_1.lastIndex: ", MyRe.lastIndex);

_2. в строке «», должа быть занятая «,» а не «+» иначе в консоль будет выведен не масив с данными, а лишь одно его первое значение.

	MyRe = /If/g

	c_exec = MyRe.exec(content)
	console.log("c_exec_1: " + c_exec);
	console.log("MyRe_1.lastIndex: ", MyRe.lastIndex);

	c_exec = MyRe.exec(content)
	console.log("c_exec_2: ", c_exec);
	console.log("MyRe_1.lastIndex: ", MyRe.lastIndex);

_3. «MyRe.lastIndex = 2» так можно изменить индекс начиная с которогго будет производиться поиск подстроки.

Добавить комментарий