2013-05-20 4 views
51

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

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

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

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

+1

Пожалуйста, измените название. И что вы действительно пытаетесь сделать? Я все еще не знаю, прочитав ваш вопрос. – OptimusCrime

+0

Я не уверен, что понимаю. –

+2

http://meta.stackexchange.com/a/177767/178816 –

ответ

71

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

/\//ig; // Matches/

или просто использовать IndexOf

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

Спасибо, Бен, я тоже это пробовал, но я добавил еще \ в конце. – iBrazilian2

14

Вам необходимо избегать / с \.

/\//ig // matches/
4

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

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

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

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

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

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

+6

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

0

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

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

/\\(.*)\//g 

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

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

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

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

0

вперед Слэш особый характер так, вы должны добавить обратный слэш перед косой чертой, чтобы заставить его работать

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

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

0

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

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

const word = /[/](\w+)/ig; 
"/dev/null".match(word)  // => ["/dev", "/null"] 
Смежные вопросы