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

205
Views
PHP Regex coincide con los ID de incremento con espacios opcionales

Tratando de encontrar incrementos en cadenas como el propósito previsto (banca), etc.

Intento crear una expresión regular que coincida con 123456 ... y 123 456 ... .

Recibo las líneas de propósito previstas implosionadas sin espacio vacío. Entonces obtendré el incremento como FooBar 123456 Baz FooBar 123456Baz o FooBar123456Baz .

Los incrementos comienzan con 15 o 16. Ejemplos: 150000000001 160000000001 .

Lo que obtuve: (^\s*|[^0-9])((15|16)(?:\d\s?){10})([^0-9]|\s*$)

 Pattern break down: # // Begin of string (perhaps empty spaces) OR no digit. (^\s*|[^0-9]) // Prefix "15" or "16" and 10 digits (perhaps empty spaces between). ((15|16)(?:\d\s?){10}) // Not following by digit OR (perhaps empty spaces between) end of string. ([^0-9]|\s*$) #

El primer problema que tengo es que (?:\d\s?) siempre selecciona un espacio vacío después. El segundo problema es que mis intentos al principio y al final realmente no funcionan.

La parte principal es ((15|16)(?:\d\s?){10}) . Pero esto también continúa seleccionando después de los saltos de línea, lo que no debería hacer. Es por eso que trato de limitar las coincidencias con "no 0-9 O final|comienzo de línea".

Estoy probando esto en regex101.com

Ejemplos de lo que debe coincidir :

 -- no empty space at start of line, and one or more spaces between, and none-number before|after 150000000001 150000000001 150000000001 150000000001 d 150000000001d 150000000001 d150000000001d -- empty space before and in between 150 000 000 001 15 00 00 00 00 01 --not a must tho 150000000001 -- just a string of the increment only 160000000001 -- just a string of the increment only

El problema de la nueva línea -

 -- the new line problem Foo Bar160000000 001 Baz

selecciona

 160000000 001

que no debe.

¿Cómo restringir adecuadamente el principio y el final?

Gracias por tu tiempo.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puedes usar

 /(?<!\d)1[56]\d(?:\h?\d){9}(?!\d)/

La expresión regular coincide con:

  • (?<!\d) - un límite de dígitos a la izquierda, no se permite ningún dígito inmediatamente a la izquierda
  • 1 - un carácter 1
  • [56] - 5 o 6 caracteres
  • \d - cualquier dígito
  • (?:\h?\d){9} - nueve apariciones de un espacio en blanco horizontal opcional y cualquier dígito
  • (?!\d) - un límite de dígitos a la derecha, no se permite ningún dígito inmediatamente a la derecha.
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!