Quiero validar las entradas de un usuario, el formato para las entradas sería: 3 caracteres en mayúscula, 3 números enteros, un espacio opcional, a -, un espacio opcional, ya sea 'LAB o ((EN o ENLH) con 1 número de entero que va de a [1-9]).

La expresión regular que escribí es

/\D{3}\d{3}\s?-\s?(LAB|(EN(LH)?\d{1}))/

Me resulta difícil detener las entradas después del LAB de modo que cuando se introduce EEE333 - LAB1 se invalida.

0
wokoro douye samuel 14 ene. 2018 a las 15:14

3 respuestas

La mejor respuesta

Si está preguntando cómo prevenir LAB1 al final, use un ancla de final de línea $ en su prueba de expresión regular: /\D{3}\d{3}\s?-\s?(LAB|(EN(LH)?\d{1}))$/

Si está tratando de requerir exactamente un dígito al final de las cadenas aceptables, mueva la coincidencia de un solo dígito fuera de los grupos opcionales: /\D{3}\d{3}\s?-\s?(LAB|(EN(LH)?))\d{1}$/

1
sorak 14 ene. 2018 a las 12:21

He escrito para usted la siguiente expresión regular:

[A-Z] {3} [0-9] {3} \ s? - \ s? (?: LAB | (?: EN | LH)) [1-9] {1}

La expresión regular funciona de la siguiente manera:

[A-Z]{3}

COINCIDE EXACTAMENTE CON TRES CARACTERES EN MAYÚSCULAS QUE VAN DE LA A LA Z

[0-9]{3}

COINCIDE EXACTAMENTE CON TRES NÚMEROS DE 0 A 9

\s?\-\s?

COINCIDE un espacio (opcional) o un '-' (requerido) o un espacio (opcional)

(?:LAB|(?:EN|LH))

MATCH 'LAB' OR ('EN' OR 'LH')
?: omite la captura de LAB OR EN O LH

[1-9]{1}

COINCIDE EXACTAMENTE UN NÚMERO DE 1 A 9

1
Kamuffel 14 ene. 2018 a las 12:36

Puede colocar su expresión regular entre los límites de palabras \b. Comienza su expresión regular con \D, que es cualquier carácter que no sea un dígito. Eso, por ejemplo, también coincidiría con $%^. Podrías usar [A-Z].

Utiliza \d{1}, que es una forma abreviada de [0-9], pero desea hacer coincidir un dígito entre 1 y 9 [1-9]. También puede omitir el {1}.

Tal vez esta actualización funcione para usted?

\b[A-Z]{3}\d{3} ?- ?(?:LAB|(?:EN(?:LH)?[1-9]))\b

Explicación

  • Un límite de palabra \b
  • Combina 3 caracteres en mayúscula [A-Z]{3}
  • Match 3 dígitos \d{3}
  • Haga coincidir un espacio en blanco opcional, un guión y otro espacio en blanco opcional ?- ?
  • Un grupo sin captura que, por ejemplo, coincide con LAB o EN EN1 o ENLH o ENLH9 (?:EN(?:LH)?[1-9]))
  • Un límite de palabra \b
1
The fourth bird 14 ene. 2018 a las 13:27
48249460