2016-07-12 3 views
0

Я работаю над RegEx, который должен соответствовать определенному TLD, но я, вероятно, пройду слишком много шагов (что я хотел бы сохранить как можно меньше, чтобы не перегружать двигатель): идея заключается в том, чтобы соответствовать URL-адресов с использованием TLD ".net" (а не весь домен):RegEx, соответствующий определенному TLD

  1. hxxp: //us.netprinting.com/
  2. hxxps: // нас. netprinting.com/
  3. hxxps: //us.net
  4. mycar.netto.com/login
  5. www.wonderfulday.net:80/login
  6. myhouse.net:443

Я работаю на этом и до сих пор я только соответствие # 3 и # 5, но не # 6 :

/(?<=\/\/|\.(?!-))[a-z0-9-]+(?<!-)\.net\b(?!\.)/g 

Я иду слишком дико, или вы видите более легкий способ достичь этого?

Большое вам спасибо.

+1

Вы должны сообщить нам, что должно (не) соответствовать –

+0

URL-адресам или FQDN с ".net" как домен верхнего уровня. – MimmoFu

+0

какой вкус это? –

ответ

1

Вы можете использовать:

\.net(?:[:\/]|$) 

он будет соответствовать .net с последующим : или / или в конце строки. См. demo

+0

Вы полностью правы о '.' @Aaron –

+0

Еще лучше, используйте lookahead: https://regex101.com/r/lD6jN9/3 – Yaron

+0

@Yaron Я не вижу улучшения с помощью lookahead ... –

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