Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
символы в SHELL.docx
Скачиваний:
3
Добавлен:
22.11.2018
Размер:
61.51 Кб
Скачать

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

Патэрн регулярного выражения состоит из простых символов, например, /abc/, или из комбинаций простых и специальных символов, как /ab*c/ или /Chapter (\d+)\.\d*/. В последнем примере имеются скобки, которые использованы как запоминающее устройство. Совпадение, сделанное этой частью патэрна, запоминается для последующего использования.

Использование простых патэрнов

Простые патэрны состоят из символов, для которых ищется прямое совпадение. Например, патэрн /abc/ совпадает с комбинацией символов в строке только тогда, когда символы 'abc' появляются вместе и в указанном порядке. Такое совпадение будет найдено в строках "Hi, do you know your abc's?" и "The latest airplane designs evolved from slabcraft." В обоих случаях имеется совпадение с подстрокой 'abc'. В строке "Grab crab" совпадения нет, потому что она не содержит подстроки 'abc'.

Использование специальных символов

Если при поиске требуется выполнить нечто большее, чем простое совпадение, например, найти один или более символов b или найти пробелы, патэрн должен содержать специальные символы. Например, патэрн /ab*c/ совпадает с любой комбинацией символов, в которой после одиночного 'a' следуют ноль или более 'b' (* означает 0 или более вхождений предыдущего символа) и символ 'c'. В строке "cbbabbbbcdebc" этот патэрн совпадает с подстрокой 'abbbbc'.

В таблице дан полный список - описание специальных символов, которые могут использоваться в регулярных выражениях.

Символ

Описание

\

Один из следующих вариантов: Для символов, которые обычно рассматриваются литерально, указывает, что следующий символ является специальным и не должен интерпретироваться литерально. Например, /b/ совпадает с символом 'b'. При помещении обратного слеша перед b, то есть /\b/, символ становится специальным, обозначая границу слова. Для символов, которые обычно рассматриваются как специальные, указывает что следующий символ не является специальным и должен интерпретироваться литерально. Например, * это специальный символ, который означает 0 или более совпадений с вхождением предыдущего символа; например, /a*/ означает 0 или более символов а. Для подстановки * литерально, поставьте перед ним обратный слеш; например, /a\*/ совпадает с 'a*'.

^

Совпадает с началом строки. Например, /^A/ не совпадает с 'A' в строке "an A," но совпадает с первой А в строке "An A".

$

Совпадает с концом строки. Например, /t$/ не совпадает с 't' в "eater", но совпадает в "eat".

*

Предшествующий символ совпадает 0 или более раз. Например, /bo*/ совпадает с 'boooo' в "A ghost booooed" и с 'b' в "A bird warbled", но не совпадает в "A goat grunted".

+

Предшествующий символ совпадает 1 или более раз. Эквивалентно {1,}. Например, /a+/ совпадает с «a» в "candy" и всеми «a» в "caaaaaaandy."

?

Предшествующий символ совпадает 0 или 1 раз. Например, /e?le?/ совпадает с 'el' в "angel" и с 'le' в "angle."

.

(Десятичная точка) совпадает с любым одиночным символом, кроме символа новой строки. Например, /.n/ совпадает с 'an' и с 'on' в "nay, an apple is on the tree", но не с 'nay'.

(x)

Симол 'x', запоминает его для последующего использования. Например, /(foo)/ совпадает (и запоминает) с 'foo' в "foo bar." Совпавшая подстрока может быть вызвана из результирующего массива элементов [1], ..., [n] или из свойств $1, ..., $9 предопределённого объекта RegExp. Например:  <SCRIPT LANGUAGE="JavaScript1.2">  re = /(\w+)\s(\w+)/;  str = "John Smith";  newstr = str.replace(re, "$2, $1");  document.write(newstr)  </SCRIPT>  Будет выведено "Smith, John".

x | y

'x' или с 'y'. Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple."

{n}

Где n это положительное целое. Предшествующий символ совпадает точно n раз. Например, /a{2}/ не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и с первыми двумя 'a' в "caaandy."

{n,}

Где n это положительное целое. Предшествующий символ совпадает как минимум n раз. Например, /a{2,} не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и в "caaaaaaandy."

{n,m}

Где n и m это положительные целые. Предшествующий символ совпадает как минимум n и максимум m раз. Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' in "candy," первыми двумя 'a' в "caandy" и первыми тремя 'a' в "caaaaaaandy" Обратите внимание, что в "caaaaaaandy" совпадает только "aaa", хотя строка-оригинал содержит больше символов 'a'.

[xyz]

Набор символов. Совпадает с любым одним из символов патэрна. Вы можете специфицировать диапазон символов, используя дефис. Например, [abcd] эквивалентно [a-d]. Совпадает с 'b' в "brisket" и с 'c' в "ache".

[^xyz]

Отрицание набора символов. То есть совпадение со всем, кроме того, что находится в скобках. Вы можете специфицировать диапазон символов, используя дефис. Например, [^abc] это то же самое, что [^a-c]. Первоначально совпадает с 'r' в "brisket" и с 'h' в "chop".

[\b]

backspace. (Не путайте с \b.)

\b

Граница слова – пробел/space или символ новой строки. (Не путайте с [\b].) Например, /\bn\w/ совпадает с 'no' in "noonday"; /\wy\b/ совпадает с 'ly' in "possibly yesterday".

\B

НЕ граница слова. Например, /\w\Bn/ совпадает с 'on' в "noonday"; /y\B\w/ совпадает с 'ye' в "possibly yesterday".

\cX

Где X это управляющий символ. Совпадает с управляющим символом в строке. Например, /\cM/ совпадает с комбинацией control-M.

\d

Цыфра. Эквивалентно [0-9]. Например, /\d/ или /[0-9]/ совпадает с '2' в строке "B2 is the suite number".

\D

Не-цифра. Эквивалентно [^0-9]. Например, /\D/ или /[^0-9]/ совпадает с 'B' в "B2 is the suite number"

\f

Знак перехода к новой странице.

\n

Начало новой строки (начало абзаца в Unix-системах)

\r

Возврат каретки (комбинация \r\n дает начало абзаца в DOS-системах)

\s

Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed. Эквивалентно [ \f\n\r\t\v]. Например, /\s\w*/ совпадает с ' bar' в "foo bar".

\S

Совпадает с одиночным символом, отличным от пробела. Эквивалентно [^ \f\n\r\t\v]. Например, /\S\w*/ совпадает с 'foo' в "foo bar."

\t

Совпадает с tab.

\v

Совпадает с vertical tab.

\w

Совпадает с любым алфавитно-цифровым символом, включая символ подчёркивания. Эквивалентно [A-Za-z0-9_]. Например, /\w/ совпадает с 'a' в "apple", с '5' в "$5.28" и с '3' в "3D."

\W

Совпадает с любым не-алфавитно-цифровым символом. Эквивалентно [^A-Za-z0-9_]. Например, /\W/ или /[^$A-Za-z0-9_]/ совпадает с '%' в "50%."

\n

Где n это положительное целое. Обратная ссылка на последнее совпадение подстроки с n в скобках из регулярного выражения (с учётом левых скобок). Например, /apple(,)\sorange\1/ совпадает с 'apple, orange,' в "apple, orange, cherry, peach." 

Примечание: Если количество левых скобок меньше числа, специфицированного в \n, то \n считается восьмеричной escape-последовательностью, как описано в следующем ряду.

\ooctal \xhex

Где \ooctal это 8-ричное escape-значение или где \xhex это 16-ричное escape-значение. Даёт возможность внедрять ASCII-коды в регулярные выражения.