Javascript, хранящий регулярное выражение в переменной - PullRequest
4 голосов
/ 15 сентября 2009

У меня есть эта строка кода в JavaScript

var re = (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

Обычно я инкапсулирую синтаксис регулярных выражений с символами /, но, поскольку они находятся внутри регулярного выражения, это портит инкапсуляцию. Есть ли другой способ, как я могу сохранить его внутри переменной?

Текущие слэши, которые выглядят как escape-символы, являются частью регулярного выражения, так как я использую это в c # также и отлично работает

Ответы [ 3 ]

18 голосов
/ 15 сентября 2009
var re = new RegExp("^your regexp.*$", "gi");
7 голосов
/ 15 сентября 2009

Один из способов - избежать всех вхождений / в вашем регулярном выражении как \/, как вы уже частично делаете:

var re = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/;
1 голос
/ 15 сентября 2009

Вы можете избежать косой черты внутри своего регулярного выражения:

/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/

(вы уже сделали это с первыми двумя слешами ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...