2010-07-18 3 views
2

с помощью http://www.regular-expressions.info/javascriptexample.html Я проверил следующее регулярное выражениерегулярное выражение и Javascript

^\\{1}([0-9])+ 

это разработано, чтобы соответствовать обратной косой черты, а затем номер.

Он работает там

если я попробую это непосредственно в коде

var reg = /^\\{1}([0-9])+/; 
reg.exec("/123") 

я не получаю матчей!

Что я делаю неправильно?

+0

Разве это не косая черта во второй строке? – sje397

+1

Любые конкретные причины, по которым вы не используете match(), https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Objects:String:match? – Anders

+0

На самом деле я был идиотом. Я хотел, чтобы соответствовать/123 так что мне нужно что-то вроде /^ \/{1} ([0-9] +) $/ – lehelp

ответ

2

Вы должны избежать обратной косой черты в строке:

"\\123" 

Кроме того, для различных ошибок реализации, вы можете захотеть установить reg.lastIndex = 0;. Кроме того, {1} полностью резервный, вы можете упростить свое регулярное выражение до /^\\(\d)+/.
Последнее примечание: (\d)+ будет снимать только Последняя цифра, вы можете хотеть (\d+).

+0

, что была опечатка в должности! Я обновил его! – lehelp

+0

@lehelp - Ваше сообщение по-прежнему отображается без '' ', прямо сейчас ваш' reg.exec («\ 123») 'выходит из' 1', а не как обратная косая черта. - Ничего себе не понимал, что я должен был избежать этого в проклятом комментарии, а также хе. –

+0

@Nick: Опечатка была '/' вместо '\' (см. Комментарий sje397).Коби обновил свой ответ тем временем. –

5

Update:

Что касается обновления вашего вопроса. Тогда регулярное выражение должно быть:

var reg = /^\/(\d+)/; 

Вы должны слеш внутри регулярного выражения с \/.


обратной косой нужно экранировать в строке тоже:

reg.exec("\\123") 

В противном случае \1 будет рассматриваться как особый характер.

Btw, регулярное выражение может быть упрощено:

var reg = /^\\(\d+)/; 

Обратите внимание, что я переехал квантор +внутри группа захвата, в противном случае она будет улавливать только одну цифру (а именно 3), а не весь номер 123.

+0

Любой причины, почему вы не используете (? ....)? – Anders

+0

@ Анедеры - если вы не хотите захватывать, вы можете использовать '^ \\\ d +' - вам вообще не нужна группа. – Kobi

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