Пятница , 29 Март 2024
ДомойПубликациииспользование переменных в регулярных выражениях javascript

использование переменных в регулярных выражениях javascript

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

регулярные выражения языка javascript очень похожи на аналогичные из php, которые, в свою очередь, почти полностью повторяют персонал языка perl, откуда они, собственно, и пришли. в php нет классов регулярных выражений; это обычные текстовые строки. поэтому переменные в данных выражениях использовать очень просто. допустим, имеем переменную $val, в которой содержится цифра прописью. также имеем особым образом отформатированную строку $str, в которой и будет искаться совпадение.

если непонятно, что же это будет, представьте строку, в которой возможные значения записаны через разделитель, в данном случае это вертикальная черта |. в переменной $val может содержаться одно из возможных значений. тогда код для поиска можно записать так:


<?php
$str 
'|раз|два|три|';
$val 'два';
$reg '/\|' $val '\|/';
if (
preg_match($reg$str)) {
    echo 
'совпадение найдено';
} else {
    echo 
'совпадение отсутствует';
}


как видно, особых проблем не возникло. теперь попытаемся то же самое реализовать на javascript. и первое, с чем придётся столкнуться — свой (отдельный) объект регулярных выражений делает их более строгими с синтаксису. но это ещё полбеды. попытка записать регулярное выражение в лоб: /\|val\|/ ни к чему не приведёт. во первых, строка val не будет обработана так, как этого, возможно, ожидается (будет просто искаться строка, содержащая val). и во вторых: вертикальная черта является служебным символом, т. е. чтобы получить черту, потребуется её экранировать. но обратная косая черта в свою очередь также является спец-символом, и тоже подлежит экранированию. с вертикальной чертой и экранированием разобрались. теперь осталось решить вопрос с переменной.

а решается он довольно просто. достаточно знать, что регулярное выражение можно создать с помощью специального объекта:
RegExp(pattern, [flags]), где pattern — строка. теперь у нас достаточно знаний, чтобы составить регулярное выражение и на javascript:


var str '|раз|два|три|';
var 
val 'два';
var 
reg = new RegExp('\\|' val '\\|');
if (-
== str.search(reg)) {
    
alert('совпадение отсутствует');
} else {
    
alert('совпадение найдено');
}


совпадения можно искать с помощью функции search, которая возвращает -1, если совпадения не найдены, либо позицию в строке, если совпадение нашлось. напомню, что сцепка строк в javascript производится с помощью символа +. в общем, регулярные выражения на javascript настолько же круты, как и в perl. но, помимо это, у них есть ещё один неоспоримый плюс: выполнение происходит на клиенте, что очень блогоприятно скажется на вашем сервере.

Рейтинг: 0

Автор публикации

2 070
не в сети 11 месяцев

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (Оценок пока нет)
Загрузка...

Оставить комментарий

Политика конфиденциальности

Наш сайт использует файлы cookies, чтобы улучшить работу и повысить эффективность сайта. Продолжая работу с сайтом, вы соглашаетесь с использованием нами cookies и политикой конфиденциальности.

Принять