2014-08-12 4 views
0

Поскольку я учусь Javascript и Express.js в то же время я экспериментировал вокруг с регулярными выражениями, делая запрос GETRegex Ошибка в Express.js

Чтобы familiaries мой сам с регулярными выражениями я использовал этот chart (также приводится ниже)

Greedy Reluctant Possessive Meaning 
X?  X??   X?+   X, once or not at all 
X*  X*?   X*+   X, zero or more times 
X+  X+?   X++   X, one or more times 
X{n} X{n}?  X{n}+  X, exactly n times 
X{n,} X{n,}?  X{n,}+  X, at least n times 
X{n,m} X{n,m}?  X{n,m}+  X, at least n but not more than m times 

Мой вопрос заключается в том, что, как я могу получить регулярное выражение, чтобы соответствовать URL, если он имеет только один /.
Другими словами, это будет соответствовать только URL по умолчанию localhost:1337/

app.get(/\/{1}/, function (req, res) { 
    res.render("index"); 
}); 

Однако мое текущее регулярное выражение выше соответствует другим имен путей (то есть. localhost:1337/home/login), потому что теперь я знаю, что он использует жадный квантор

После чтения больше о регулярных выражениях, я изменил квантификатор так, чтобы он был притяжательным.
/\/{1}+/

Но затем выразить дал эту ошибку:

Syntax Error: Invalid Regular Expression: /\/{1}+/: Nothing to Repeat 

Так это мой синтаксис регулярных выражений не так?

ответ

1

JavaScript не поддерживает притяжательные квантификаторы. Ошибка, которую вы видите, возникает из-за того, что + может использоваться только как жадный один или более квантификатор.

Схема, к которой вы обращаетесь, от Oracle, и объясняет квантификаторы, поддерживаемые Java, а не JavaScript.

Вам не нужно прибегать к чему-либо особенному, чтобы выполнить то, что вам нужно.

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

/[^/]+\/$/ 

Один или более не слэш, а затем через слэш, с последующим конец строки.

+0

О, я этого не знал. Но так или иначе, чтобы сделать регулярное выражение, он отвечает на мой вопрос – AmitS

+0

регулярное выражение, которое соответствует строке с _only_ one '/' is '/ \/$ /' – AmitS

+0

На самом деле это должно быть '/^[^ /] * \/[^ /] * $ /'. Проблема с '/ \/$ /' заключается в том, что она соответствует любой строке, заканчивающейся с '/', поэтому может быть '/' ранее в строке в дополнение к одному в конце. –

Смежные вопросы