2015-06-17 5 views
2

В основном я следующая строка: http:/www.-woejfewiofjewow , которые не позволены быть сопоставленыRegEx «игнорирует» квантификатор?

Мой Regex: http://(www\.[^-])?[^-].*

(я использовал regexr.com проверить это ..)

Дело в том, что Безразлично 't использовать первую часть регулярного выражения (www\.[^-])?, но вторая часть: [^-].*

Я действительно не знаю, как решить эту проблему, есть ли возможность?

Я пытаюсь найти действительные адреса (а в данном случае без .com) в следующем формате: http://www.testhttp://test

Дефис в начале не допускается (но http://www.test-test допускается)

Я пытаясь найти решение без взглядов

+1

Я думаю, ваш вопрос должен стать более конкретным/точным. Что вы после? Вы ищете регулярное выражение, которое распознает действительные «имена хостов»? – Marged

+0

Вы ищете 'www.', а затем NOT' -', но затем вы используете квантификатор '?', Что означает * ноль или один раз *. Просто удалите '?': 'Http: \/\/(www \. [^ -]) [^ -]. *' –

+0

@Marged Да, я ищу действительные URL-адреса HTTP, и у меня есть большая часть регулярное выражение, кроме «Hyphen в начале» (с www), которое, вероятно, вызвано из-за второй части регулярного выражения ([^ -]. *) – user3549524

ответ

3

Думаю, вам действительно нужно отрицательное утверждение.

\bhttp:\/\/(?!www\.-)[^-].* 

(?!www\.-) отрицательного опережение, который утверждает, что двойные forward_slashes // не должны сопровождаться www.-

DEMO

+0

Спасибо, что работает. Есть ли способ сделать это без взглядов? – user3549524

+0

это будет невозможно без взгляда. Если вы используете это, 'http: \/\/(?: www \. [^ -]) [^ -]. *', Он не будет соответствовать строкам типа 'http: // woejfewiofjewow' –

+0

Почему это точно скажем, что двойная косая черта не должна сопровождаться www.-, а не http: //? – user3549524

0

если вы пытаетесь проверить URLs, это регулярное выражение будет соответствовать URL немного лучше:

http:\/\/(?:www\.)?(?:[a-zA-z0-9]+)\.(?:[a-z]){2,3} 

эти UR допускаются:

http://www.woejfewiofjewow.net 
http://www.woejfewiofjewow.ly 

это не допускается:

http://www.woejfewiofjewow.neta 
http://www.woejfewiofjewow.n 

или даже этот

http://www.-woejfewiofjewow.net 
Смежные вопросы