Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

298
Visualizações
Haga coincidir la ruta de URL y la dirección IP de la cadena

¿Cómo hacer coincidir dos partes de la cuerda?

Cadena de ejemplo:

 /some/page_path 255.122.212.211

La primera parte que quiero hacer coincidir es una ruta válida, una simple verificación si comienza con / y sin espacios en blanco. (¿y tal vez signos especiales?)

La segunda parte es solo verificar la dirección IP si tiene un patrón de (0-9) números con puntos.

Ejemplo de cadena mala:

 /some/page _path 2525.122.212 yada yada

Regex que tengo para IP:

 ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puedes usar

 /\A(?:\/[^\/\s]+)+\s+(?:[0-9]{1,3}\.){3}[0-9]{1,3}\z/

Vea la demostración de Rubular . Detalles :

  • \A - comienzo de la cadena
  • (?:\/[^\/\s]+)+ - una o más apariciones de / y luego uno o más caracteres que no sean / y espacios en blanco
  • \s+ - uno o más caracteres de espacio en blanco
  • (?:[0-9]{1,3}\.){3}[0-9]{1,3} : tres apariciones de uno a tres dígitos seguidas de un . char, y luego de uno a tres dígitos
  • \z - final de la cadena.
over 4 years ago · Santiago Trujillo Relatório

0

Supuse que la última parte de la cadena debe ser una dirección IPv4 válida.

 require "ipaddress"
 def str_parts(str) path, ip_str = str.split(/ +/,2) raise "'#{path}' is an invalid path" unless path_valid?(path) raise "'#{ip_str}' is an invalid ip address" unless ip_valid?(ip_str) [path, ip_str] end
 def path_valid?(path) path.match?(/\A(?:\/[^\/\s]+)+\z/) end
 def ip_valid?(ip_str) IPAddress.valid?(ip_str) end

La expresión regular que he usado en path_valid? se toma de la primera parte de la expresión dada por @Wiktor. Por supuesto, se podría utilizar una comprobación específica del sistema operativo más definitiva. Vea el documento para la gema ipaddress . Tenga en cuenta que he usado el segundo argumento opcional de String#split .

 str_parts("/some/page_path 255.122.212.211") #=> ["/some/page_path", "255.122.212.211"] str_parts("/some/page _path 2525.122.212 yada Yoda") #=> RuntimeError ('_path 2525.122.212 yada Yoda' is an invalid ip address) str_parts("/some/page_path 255.122.256.211") #=> RuntimeError ('255.122.256.211' is an invalid ip address) str_parts("/some//page_path 255.122.212.211") #=> RuntimeError ('/some//page_path' is an invalid path)

Una alternativa al uso de la gema ipaddress sería escribir:

 def ip_valid?(ip_str) (IPAddr.new(ip_str) rescue nil)&.ipv4? end

Ver IPAddr::new y IPAddr#ipv4? . & es el Operador de Navegación Segura de Ruby.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda