Ответ 1
Вы можете избежать этого.
/\//ig; // Matches /
или просто используйте indexOf
if(str.indexOf("/") > -1)
У меня нет большого опыта работы с JavaScript, но я пытаюсь создать систему тегов, которая вместо использования @
или #
будет использовать /
.
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
Как использовать /
вместо #
. Я пробовал сделать var slash = '/'
и добавить + slash +
, но это не удалось.
Вы можете избежать этого.
/\//ig; // Matches /
или просто используйте indexOf
if(str.indexOf("/") > -1)
Вам нужно избежать /
с помощью \
.
/\//ig // matches /
Если вы хотите использовать /
, вам нужно избежать его с помощью \
var word = /\/(\w+)/ig;
В регулярных выражениях "/" является специальным символом, который необходимо экранировать (AKA помечен помещением a перед тем, как он отрицает любую специализированную функцию, которую он может выполнять).
Вот что вам нужно:
var word = /\/(\w+)/ig; // /abc Match
Читайте здесь специальные символы RegEx: http://www.regular-expressions.info/characters.html
Вы также можете обойти специальную обработку JS косой черты, заключив ее в группу символов, например:
const start = /[/]/g;
"/dev/null".match(start) // => ["/", "/"]
const word = /[/](\w+)/ig;
"/dev/null".match(word) // => ["/dev", "/null"]
Для меня я пытался соответствовать на /
в дате в С#. Я сделал это просто с помощью (\/)
:
string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})";
string text = "Start Date: 4/1/2018";
Match m = Regex.Match(text, pattern);
if (m.Success)
{
Console.WriteLine(match.Groups[0].Value); // 4/1/2018
}
else
{
Console.WriteLine("Not Found!");
}
JavaScript также должен быть в состоянии аналогичным образом использовать (\/)
.
Я столкнулся с двумя проблемами, связанными с вышесказанным, при извлечении текста с разделителями \
и /
и нашел решение, которое подходит для обоих, кроме использования new RegExp
, которое требует \\\\
в начале. Эти данные находятся в Chrome и IE11.
Регулярное выражение
/\\(.*)\//g
не работает. Я думаю, что //
интерпретируется как начало комментария, несмотря на escape-символ. Регулярное выражение (одинаково справедливое в моем случае, хотя и не в общем)
/\b/\\(.*)\/\b/g
тоже не работает. Я думаю, что второй /
завершает регулярное выражение, несмотря на escape-символ.
Что для меня работает, так это представить /
как \x2F
, который является шестнадцатеричным представлением /
. Я считаю это более эффективным и понятным, чем использование new RegExp
, но, конечно, ему нужен комментарий для идентификации шестнадцатеричного кода.
Прямая косая черта является специальным символом, поэтому для ее работы необходимо добавить обратную косую черту перед прямой косой чертой
$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";
где/представляет поиск/ Таким образом, вы
Вы можете избежать его, поставив перед ним \
(делая его \/
), или вы можете использовать new RegExp('/')
, чтобы избежать выхода из регулярного выражения.
Смотрите пример в JSFiddle.
'/'.match(/\//) // matches /
'/'.match(new RegExp('/') // matches /