Основной Объект | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Создание
Литеральный текстовый формат или функция конструктор RegExp
.
Литеральный формат используется следующим образом:
/pattern/flags
Функция конструктор используется следующим образом:
new RegExp("pattern", "flags")
Параметры
pattern | Текст регулярного выражения. |
flags | (Факультативный) Если определен, флаги могут иметь один из следующих 3 значений: |
/ab+c/i
new RegExp("ab+c", "i")Описание
При использовании функции конструктора, нормальные строковые правила Escape (когда включен в строку предшествующий специальным символам \) необходимы. Например, следующее эквивалентно:
re = new RegExp("\\w+")
Таблица 4.3 обеспечивает полный список и описание специальных символов, которые могут использоваться в регулярных выражениях.
re = /\w+/
Таблица 4.3 Специальные символы в регулярных выражениях.
Конструктор объекта регулярного выражения, например, new RegExp("ab+c")
, обеспечивает трансляцию времени выполнения регулярного выражения. Используйте функцию конструктор, когда Вы знаете, что образец регулярного выражения будет изменяться, или Вы не знаете образец и получаете его из другого источника, типа ввода пользователя. Если только Вы имеете определенное регулярное выражение, и если регулярное выражение используется через сценарий и может изменяться, Вы можете использовать метод compile
, чтобы компилировать новое регулярное выражение для эффективного многократного использования.
Предопределенный объект RegExp
содержит статические свойства input
, multiline
, lastMatch
, lastParen
, leftContext
, rightContext
и от $1
до $9
. Свойства input
и multiline
могут быть предварительно установлены. Значения других статических свойств устанавливаются после выполнения методов exec
и test
индивидуального объекта регулярного выражения, и после выполнения методов match
и replace
объекта String
.
Резюме Свойств
Обратите внимание, что некоторые свойства RegExp
имеют и длинные и короткие (Perl-подобные) имена. Оба имени всегда обращаются к одному и тому же значению. Perl это язык программирования, из которого JavaScript взял моделирование регулярных выражений.
| Компилирует объект регулярного выражения. |
| Выполняет поиск соответствия в строковом параметре. |
| Испытания на соответствие в строковом параметре. |
Примеры
Пример 1. Следующий сценарий использует метод replace
, чтобы заменить слова в строке. Для заменяемого текста, сценарий использует значения свойств $1
и $2
глобального объекта RegExp
. Обратите внимание, что имя объекта RegExp
не может предшествовать свойствам $
, когда они передаются как параметры методу replace
.
<SCRIPT LANGUAGE="JavaScript1.2">
Это показывает "Smith, John".
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
<HTML>
<SCRIPT LANGUAGE="JavaScript1.2">
function getInfo() {
re = /(\w+)\s(\d+)/;
re.exec();
window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</SCRIPT>Enter your first name and your age, and then press Enter.
<FORM>
<INPUT TYPE:"TEXT" NAME="NameAge" onChange="getInfo(this);">
</FORM></HTML>
Свойства
$1, ..., $9
Свойства, которые содержат заключенные в круглые скобки подстроки соответствия, если существуют.
Свойство объекта |
RegExp
|
Статическое, Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как input
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.input
.
Эти свойства могут использоваться в заменяемом тексте в методе String.replace
. Когда используется этот способ, не предваряйте их RegExp
. Пример ниже иллюстрирует это. Когда круглые скобки не включены в регулярное выражение, сценарий интерпретирует $n
литералы (где n
положительное целое число).
Примеры
Следующий сценарий использует метод replace
для включения слова в строку. Для заменяемого текста, сценарий использует значения свойств $1
и $2
глобального объекта RegExp
. Обратите внимание, что имя объекта RegExp
не предваряет свойства $
, когда они передаются как второй параметр метода replace
.
<SCRIPT LANGUAGE="JavaScript1.2">
Это показывает "Smith, John".
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
global
Использовать или нет флаг "g"
в регулярном выражении.
Свойство объекта |
RegExp
|
Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
global
это свойство индивидуального объекта регулярного выражения.
Вы не можете изменять это свойство непосредственно. Однако, при вызове метод compile
изменяет значение этого свойства.
ignoreCase
Использовать или нет флаг "i"
в регулярном выражении.
Свойство объекта |
RegExp
|
Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
ignoreCase
это свойство индивидуального объекта регулярного выражения.
Вы не можете изменять это свойство непосредственно. Однако, при вызове метод compile
изменяет значение этого свойства.
input
Строка, с которой регулярное выражение согласовано. $_
другое имя для этого же свойства.
Свойство объекта |
RegExp
|
Статическое | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как input
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.input
.
input
очищается после завершения обработчика события.
lastIndex
Целочисленное свойство для чтения/записи, которое определяет индекс, с которого начать следующее соответствие.
Свойство объекта |
RegExp
|
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
lastIndex
свойство индивидуального объекта регулярного выражения.
Например, рассмотрите следующую последовательность инструкций:
lastMatch
Последние согласованные символы. $&
другое имя для этого же свойства.
Свойство объекта |
RegExp
|
Статическое, Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как lastMatch
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.lastMatch
.
lastParen
Последняя заключенная в круглые скобки подстрока соответствия, если существует. $+
другое имя для этого же свойства.
Свойство объекта |
RegExp
|
Статическое, Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как lastParen
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.lastParen
.
leftContext
Подстрока, предшествующая самому последнему соответствию. $`
другое имя для этого же свойства.
Свойство объекта |
RegExp
|
Статическое, Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как leftContext
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.leftContext
.
multiline
Отражает, искать ли в нескольких строках. $* другое имя для этого же свойства.
Свойство объекта |
RegExp
|
Статическое | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как multiline
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.multiline
.
rightContext
Подстрока после самого последнего соответствия. $'
другое имя для этого же свойства.
Свойство объекта |
RegExp
|
Статическое, Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
Так как rightContext
статическое, оно не является свойством индивидуального объекта регулярного выражения. Вместо этого, Вы всегда используете его как RegExp.rightContext
.
source
Свойство только для чтения, которое содержит текст образца, исключая косые черты и флаги "g"
или "i"
.
Свойство объекта |
RegExp
|
Только для чтения | |
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Описание
source
это свойство индивидуального объекта регулярного выражения.
Вы не можете изменять это свойство непосредственно. Однако, при вызове метод compile
изменяет значение этого свойства.
Методы
compile
Компилирует объект регулярного выражения во время выполнения сценария.
Метод объекта |
RegExp
|
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Синтаксис
regexp.compile(pattern, flags)
Параметры
Описание
Используйте метод compile
для компиляции регулярного выражения, созданного функцией конструктором RegExp
. Он вынуждает трансляцию регулярного выражения только один раз, и это означает, что регулярное выражение не компилируется каждый раз, когда встречается. Используйте метод compile
когда Вы знаете, что регулярное выражение останется постоянным (при получении образца) и будет использоваться сценарием неоднократно.
Вызов этого метода изменяет значения свойств source
, global
и ignoreCase
регулярного выражения.
exec
Выполняет поиск соответствия в определенной строке. Возвращает результирующий массив.
Метод объекта |
RegExp
|
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Синтаксис
regexp.exec(str)
regexp(str)Параметры
regexp | Имя регулярного выражения. Это может быть имя переменной или литерал. |
str |
(Факультативный) Строка для соответствия регулярному выражению. Если опущен, используется значение RegExp.input .
|
Описание
Как показано в описании синтаксиса, метод exec
регулярного выражения может быть вызван или непосредственно (regexp.exec(str)
) или косвенно (regexp(str)
).
Если Вы выполняете соответствие просто, чтобы найти true
или false
, используйте метод test
или метод search
объекта String
.
<SCRIPT LANGUAGE="JavaScript1.2">
Следующая таблица показывает результаты этого сценария:
//Соответствие одному d, сопровождаемому одним или больше b, сопровождаемого одним d
//Запоминает согласованные b и следующий d
//Игнорирует регистр
myRe=/d(b+)(d)/ig;
myArray = myRe.exec("cdbBdbsbz");
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.2">
Этот сценарий показывает следующий текст:
myRe=/ab*/g;
str = "abbcdefabh"
myArray = myRe.exec(str);
document.writeln("Found " + myArray[0] +
". Next match starts at " + myRe.lastIndex)
mySecondArray = myRe.exec(str);
document.writeln("Found " + mySecondArray[0] +
". Next match starts at " + myRe.lastIndex)
</SCRIPT>
Found abb. Next match starts at 3
Found ab. Next match starts at 9
Примеры
В следующем примере, пользователь вводит имя, и сценарий выполняет соответствие с input. Он затем циклически проходит массив, чтобы видеть, соответствуют ли другие имена имени пользователя.
<HTML>
<SCRIPT LANGUAGE="JavaScript1.2">
A = ["Frank", "Emily", "Jane", "Harry", "Nick", "Beth", "Rick",
"Terrence", "Carol", "Ann", "Terry", "Frank", "Alice", "Rick",
"Bill", "Tom", "Fiona", "Jane", "William", "Joan", "Beth"]function lookup() {
firstName = /\w+/i();
if (!firstName)
window.alert (RegExp.input + " isn't a name!");
else {
count = 0;
for (i=0; i<A.length; i++)
if (firstName[0].toLowerCase() == A[i].toLowerCase()) count++;
if (count ==1)
midstring = " other has ";
else
midstring = " others have ";
window.alert ("Thanks, " + count + midstring + "the same name!")
}
}</SCRIPT>
Enter your first name and then press Enter.
<FORM> <INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"> </FORM>
</HTML>
test
Выполняет поиск соответствия между регулярным выражением и определенной строкой. Возвращает true
или false
.
Метод объекта |
RegExp
|
Реализовано в | Navigator 4.0, Netscape Server 3.0 |
Синтаксис
regexp.test(str)
Параметры
Описание
Когда Вы хотите знать, найден ли образец в строке, используюйте метод test
(подобно методу String.search
); для подробной информации (но более медленного выполнения) используйте метод exec
(подобно методу String.match
).
Example
Следующий пример печатает сообщение, которое зависит от успеха теста:
function testinput(re, str){
if (re.test(str))
midstring = " contains ";
else
midstring = " does not contain ";
document.write (str + midstring + re.source);
}
Последняя Модификация: 10/31/97 12:30:31
Все мессаги сюда:yanich@inbox.ru |