• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

262
Views
Javascript: escriba la expresión regular de la condición para varias cadenas

Quiero escribir una expresión regular para las siguientes cadenas para incluir todas las cadenas:

 B9966 ch6258 028 chIRZ170 IRZ170 B8966A BA966C

La SALIDA debe ser la siguiente:

 966 6258 028 170 170 966A BA966C

Condiciones :

  1. Si observa b9966, verá que su salida es 966. Significa que si la cadena comenzó con un carácter, el siguiente dígito del carácter no forma parte de la salida.
  2. Si la cadena es un número entero, se emite la cadena completa.
  3. Quiero que la salida de B8966A sea como esta 966A.
  4. De lo contrario, si las tres condiciones anteriores no existen, todos los dígitos de cadena se devuelven como salida.

Quería escribir con condiciones en expresiones regulares (es decir: (?(?condition)then|else) ) pero descubrí que javascript no admite condiciones.

Por ejemplo, la siguiente solución funciona bien, pero estoy buscando una expresión regular más profesional:

 ^\d+.|(?<=^\D{1}\d)\d+.|(?<=^\D{2,})\d+.
almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Para sus datos de ejemplo, puede eliminar una mayúscula seguida de un solo dígito o eliminar todos los que no sean dígitos.

 [AZ]\d|[^\d\n]+

Demostración de expresiones regulares

 const regex = /[AZ]\d|[^\d\n]+/g; [ "B9966", "ch6258", "028", "chIRZ170", "IRZ170" ].forEach(s => console.log(s.replace(regex, '')));

Editar

Para los ejemplos actualizados, puede comenzar la coincidencia con un dígito que no sea seguido de un dígito, o hacer coincidir 1+ dígitos que no sean:

 \b(?:[^\d\n]\d|[^\d\n]+)

Demostración de expresiones regulares

Para no tocar el último ejemplo, puede usar una anticipación negativa:

 \b(?:[^\d\n]\d|(?![AZ]{2}\d)[^\d\n]+)

Demostración de expresiones regulares

 const regex = /\b(?:[^\d\n]\d|(?![AZ]{2}\d)[^\d\n]+)/; [ "B9966", "ch6258", "028", "chIRZ170", "IRZ170", "B8966A", "BA966C" ].forEach(s => console.log(s.replace(regex, '')));

almost 3 years ago · Juan Pablo Isaza Report

0

Se puede usar otra expresión regular:

 (?<!^\D)\d+.*

En la expresión regular anterior, se usa la búsqueda negativa, es decir, si cada carácter no comenzó con \D antes y se compara con el carácter \d después.
Resultado: https://regex101.com/r/Av8pEq/1

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error