У меня нет большого опыта работы с JavaScript, но я пытаюсь создать систему тегов, которая будет использовать вместо @
или .#
/
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
Как я мог использовать /
вместо #
. Я пробовал делать var slash = '/'
и добавлять + slash +
, но это не удалось.
javascript
regex
iBrazilian2
источник
источник
Ответы:
Вы можете избежать этого вот так.
/\//ig; // Matches /
или просто используйте indexOf
if(str.indexOf("/") > -1)
источник
Вам нужно сбежать
/
с собой\
./\//ig // matches /
источник
Если вы хотите использовать,
/
вам нужно убежать от него с помощью\
var word = /\/(\w+)/ig;
источник
В регулярных выражениях «/» - это специальный символ, который необходимо экранировать (он же помечается, помещая перед ним символ \, что исключает любую специализированную функцию, которую он может выполнять).
Вот что вам понадобится:
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"]
источник
/[/]/
визуально различает конечный разделитель более четко, чем/\//
./[/]/
его легче читать и он работает, но, к сожалению, некоторые валидаторы RegEx сообщают, что «неэкранированный разделитель должен быть экранирован обратной косой чертой» даже внутри группы символов . Итак, я вернулся к уродливой/\//
форме.Вы можете избежать его, поставив перед ним
\
(создание\/
), или вы можете использовать,new RegExp('/')
чтобы избежать экранирования регулярного выражения .См. Пример в JSFiddle .
'/'.match(/\//) // matches / '/'.match(new RegExp('/') // matches /
источник
Что касается меня, я пытался сопоставить
/
дату в C #. Я сделал это, просто используя(\/)
: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-символ. Регулярное выражение (одинаково верно в моем случае, но не в целом)тоже не работает. Я думаю, что второе
/
завершает регулярное выражение, несмотря на escape-символ.Что действительно работает для меня, так это представление
/
as\x2F
, которое является шестнадцатеричным представлением/
. Я думаю, что это более эффективно и понятно, чем использованиеnew RegExp
, но, конечно, для определения шестнадцатеричного кода нужен комментарий.источник
Прямая косая черта - это специальный символ, поэтому вам нужно добавить обратную косую черту перед косой чертой, чтобы она работала
$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";
где / означает поиск / Таким образом, вы
источник