Regexp to match domain and subdomains (in Java)

后端 未结 3 583
心在旅途
心在旅途 2021-01-15 15:00

I need to verify if given URL matches my domain mask.

Example: I want to allow only domains which satisfy this \"pseudo-mask\":

https://*.domain.com
         


        
相关标签:
3条回答
  • 2021-01-15 15:21
    ^https?://[^/@]*\.domain\.com(/.*)?$
    

    (The not-/ to stop .domain.com appearing in the path, the not-@ to stop username:password@ abuse.)

    Better, though: use the URL class built into Java to parse a URL properly. You can then just read the host property and check that it endsWith your domain.

    0 讨论(0)
  • 2021-01-15 15:23

    you can use

    "http://a.domain.com".indexOf("domain.com") 
    

    this will return -1 if the requested string is not in the text.

    since you can don't want '.' after 'domain.com'

    you can can use

    "http://a.domain.com".indexOf("domain.com.")
    

    and check whether it is -1 or not

    0 讨论(0)
  • 2021-01-15 15:28

    Try this:

    ^https?://(?:[^./@]+\.)*domain\.com(?![^/])

    [^.]+\. means one or more non-dot characters, followed by a dot; a quick and dirty way to match a domain-name component and its trailing dot. I wouldn't use that to find domain names in a larger body of text, but it's good enough for the kind of validating you're doing. Put that in a group and add the * quantifier to get a regex that matches zero or more components.

    You don't really care what comes after the domain name, but you do have to make sure you've reached the end of it; for example, you don't want to match http://domain.company.com. The final part of the regex, (?![^/]), is a negative lookahead that means if there is another character after this, and that character is not /, fail.

    0 讨论(0)
提交回复
热议问题