Regex для числа, окруженного косой чертой - PullRequest
2 голосов
/ 28 сентября 2011

Как видно из заголовка, у меня есть (неправильное) регулярное выражение в JavaScript, которое должно проверять наличие символа «2» (в данном случае), окруженного косой чертой. Таким образом, если бы URL был http://localhost/page/2/, Regex прошел бы.

В моем случае у меня есть что-то вроде http://localhost/?page=2, и регулярное выражение все еще проходит.

Я не уверен почему. Кто-нибудь может сказать мне, что с ним не так?

/^(.*?)\b2\b(.*?$)/

(я скажу вам, я не писал этот код, и я понятия не имею, как он работает, потому что я очень плох с Regex)

Ответы [ 2 ]

6 голосов
/ 28 сентября 2011

Кажется слишком простым, но разве это не должно работать?:

/\/2\// 

http://jsfiddle.net/QHac8/1/

Поскольку это javascript, вы должны избегать косой черты, поскольку они являются разделителями для строки регулярного выражения.

или если вы хотите сопоставить любое число:

/\/\d+\// 
4 голосов
/ 28 сентября 2011

Вы не проверяете число, окруженное косой чертой. Косые черты, которые вы видите, являются только вашими разделителями регулярных выражений. Вы проверяете на 2 с границей слова \b на каждой стороне. Это верно для /2/, но также для =2

Если вы хотите разрешить только 2, окруженные косой чертой, попробуйте это

/^(.*?)\/2\/(.*?)$/

^ означает совпадение с начала строки

$ совпадение до конца строки

(.*?) эти части соответствуют всему до и после вашего 2, и эти части хранятся в группах захвата.

Если вам не нужны эти части, тогда Ричард Д. прав, и регулярное выражение /\/2\// подходит вам.

...