Skip to content

c-coder/range-slider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RegExp

https://www.regular-expressions.info - документация на английском.

regExr.com - конструктор (браузер - js & сервер PHP/PCRE)
pagecolumn.com - конструктор JS и PHP


В js записываются после выражения: /regexp/flags
В Fiddler (.NET) - перед: (?flags)regexp

JS
i - ignoreCase (регистронезависимый)
g - global (все совпадения)
m - multiLine (многострочый режим) - изменяет поведение границ (^ и $)

var regExp = /.+/igm;

FIDDLER
n - превращает все неименованные группы в группы без захвата.
s - в однострочном режиме делает '.' совпадением со всеми символами, включая разрыв строк (\r\n)
x - режим свободного пробела пробельные символы игнорируются, но не '\ d'

(?insx)regexp

Границы

^ // /^A/ ==>'A', если с неё начинается текст (строка при установленном флаге /^0/m)
$ // /A$/ ==>'A', если это последний символ в тексте (строке, при флаге /m)

\b // граница слова.
<!-- С русским языком не работает! Только символы \w ! -->
/\bjava\b/ // Шаблон соответствует 'java' только если это слово целиком
// т.е. окружено пробельными символами, а точнее символами \W ==> 'java!' тоже подойдет

Символ (литерал, набор, диапазон, класс)

/a/ // литерал, соответствует 'a'

// набор
/[123]a/ // 1a, 2a, 3a

// диапазон
/[1-3]/ // 1, 2, 3

// набор + диапазон (по номерам Unicode)
/[1-3a-c]/ // 1, 2, 3, a, b, c

/[^123] // любой символ, кроме 1, 2, 3

Для экранирования используется символ '\'
Внутри [ ] можно НЕ экранировать:

  • . + ( ) [

  • - если он в начале или конце

  • ^ если не в начале

Короткая запись диапазонов (классы символов)

\d => [0-9] 
\D => [^0-9]

\w => [a-zA-z0-9_] 
\W => [^\w]

\s // пробел, табуляция, символы перевода строк
\S // НЕ пробельный символ

. // любой символ, кроме символов первода строк (\r \n )
[^] // вообще любой символ в js, но в PCRE не работает - приводит к ошибке!

Квантификаторы

Используются с символами и группами ( )

/\w{5}/ // 5 любых символов подряд

/\w{3,5}/ // от 3 до 5 любых символов подряд

/\w{3,}/ // от 3 любых символов подряд

Короткая запись часто используемых квантификаторов:

+ // ==> {1,} Один или несколько символов(групп) ( /\w+/ = /\w{1,} )
* // ==> {0,} 0 или несколько
? // ==> {0,1} Может быть, а может нет (0 или 1 раз)

Режимы квантификации

исходная строка для поиска

<p>Text</p>
  1. Жадная (greedy)
    включена по умолчанию

    /<[^]*>/g

    <p>Text</p> - найдет максимально длинный вариант

    1. найден символ <
    2. [^] дойдет до конца текста (ведь любой символ)
    3. откатится на 1 символ назад (циклично) пока не найдет >
  2. Ленивая (lazy)
    включается добавлением "?" после квантификатора (напр. +?, *?, ??, {0,5}?)

    /<[^]*?>/g

    <p>Text</p> - найдет самый короткий(е) вариант

    1. найден символ <
    2. [^] после каждого совпадения, будет проверять оставшуюся часть шаблона (за квантификатором).

    Здесь можно добится того же результата при жадной квантификации, изменив шаблон на /<[^>]*>/g

  3. Сверхжадная или ревнивая (possesive)
    = жадная без отката (3-го шага)
    в js НЕ реализована.


Альтернация

| - или

/red|green|\d{3}/g // red или green или 123 (и любое 3-значное число)

/авто(страда|бан)/g // скобки задают границы альтернации

Предпросмотр (Lookahead)

(?=..regExp) - просматривает, но не включает совпадение в результат.

/java(?=Script)/g // java, если за ним следует Script (positive)

java javaScript

/java(?!=Script)/g // java, если за ним НЕ следует Script (negative)

java javaScript


Скобочная группа

Используется для группировки части шаблона с целью

  • квантификации /(mur)+/g
  • доступа к части совпадения по номеру скабочной группы (с 1 слева-направо)

! Группа (?: ...) не получает номер

// Необходимо найти в тексте строку в кавычках. 
// Кавычки могут быть одинарными '...' или двойными "..."

/['"](.*?)['"]/ // найдет не только "..." и '...', но и "...', '..."
/(['"])(.*?)\1/ // найдет только парные кавычки

// \1 будет заменео либо на ' либо на " (на сопоставление для скобочной группы №1)

About

Vanila JS simple input range slider

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published