Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

297
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!