Подтвердить что ты не робот

Согласование прямого слэша с регулярным выражением

У меня нет большого опыта работы с JavaScript, но я пытаюсь создать систему тегов, которая вместо использования @ или # будет использовать /.

var start = /#/ig; // @ Match

var word = /#(\w+)/ig; //@abc Match

Как использовать / вместо #. Я пробовал сделать var slash = '/' и добавить + slash +, но это не удалось.

4b9b3361

Ответ 1

Вы можете избежать этого.

/\//ig; //  Matches /

или просто используйте indexOf

if(str.indexOf("/") > -1)

Ответ 2

Вам нужно избежать / с помощью \.

/\//ig // matches /

Ответ 3

Если вы хотите использовать /, вам нужно избежать его с помощью \

var word = /\/(\w+)/ig;

Ответ 4

В регулярных выражениях "/" является специальным символом, который необходимо экранировать (AKA помечен помещением a перед тем, как он отрицает любую специализированную функцию, которую он может выполнять).

Вот что вам нужно:

var word = /\/(\w+)/ig; //   /abc Match

Читайте здесь специальные символы RegEx: http://www.regular-expressions.info/characters.html

Ответ 5

Вы также можете обойти специальную обработку JS косой черты, заключив ее в группу символов, например:

const start = /[/]/g;
"/dev/null".match(start)     // => ["/", "/"]

const word = /[/](\w+)/ig;
"/dev/null".match(word)      // => ["/dev", "/null"]

Ответ 6

Для меня я пытался соответствовать на / в дате в С#. Я сделал это просто с помощью (\/):

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 также должен быть в состоянии аналогичным образом использовать (\/).

Ответ 7

Я столкнулся с двумя проблемами, связанными с вышесказанным, при извлечении текста с разделителями \ и / и нашел решение, которое подходит для обоих, кроме использования new RegExp, которое требует \\\\ в начале. Эти данные находятся в Chrome и IE11.

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

/\\(.*)\//g

не работает. Я думаю, что // интерпретируется как начало комментария, несмотря на escape-символ. Регулярное выражение (одинаково справедливое в моем случае, хотя и не в общем)

/\b/\\(.*)\/\b/g

тоже не работает. Я думаю, что второй / завершает регулярное выражение, несмотря на escape-символ.

Что для меня работает, так это представить / как \x2F, который является шестнадцатеричным представлением /. Я считаю это более эффективным и понятным, чем использование new RegExp, но, конечно, ему нужен комментарий для идентификации шестнадцатеричного кода.

Ответ 8

Прямая косая черта является специальным символом, поэтому для ее работы необходимо добавить обратную косую черту перед прямой косой чертой

$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";

где/представляет поиск/ Таким образом, вы