Java expresión regular coincide con el espacio antes o después de caracteres

Matt ZDJ:

Trato de tener una expresión regular validar un campo de entrada.

Esta pregunta es la continuación de esta pregunta , pero he cometido un error y la cuestión cambió un poco así que creé una nueva.

Aquí está mi java expresiones regulares:

^(?:\?*[a-zA-Z\d]){2}[a-zA-Z\d?]*\*?$

Manifestación

Lo que estoy atando al partido es:

  • Mínimo 2 caracteres alfanuméricos (que no sea '?' Y '*')
  • El '*' puede sólo aparece una vez y al final de la cadena
  • Los '?' lata aparece múltiples veces
  • Sin WhiteSpace justo al principio
  • No hay espacio en blanco antes o después de '?' o '*'

Así que para exemple:

  • DAC = OK
  • ? BCD = OK
  • ab ?? = OK
  • b * = OK
  • ab? * = OK
  • ?? cd = OK
  • dos cd = OK
  • * Ab = OK NO
  • un ? b = NO OK
  • ??? = NO OK
  • ab? cd NO = OK
  • ab? d = NO OK
  • b * = NO OK
  • ABCD = NO OK (espacio en el comienzo)

Como le he pedido en la pregunta fisrt, sin espacios en blanco en absoluto están permitidos en mi expresión regular ahora, pero eso no es lo que quiero y estoy un poco perdido ¿me pueden ayudar por favor?

Wiktor Stribiżav:

Puedes utilizar

^(?!\s)(?!.*\s[*?])(?!.*[*?]\s)(?:[?\s]*[a-zA-Z0-9]){2}[a-zA-Z0-9?\s]*\*?$

Vea la demostración de expresiones regulares .

Nota de uso : si se utiliza con Java .matches()método, el ^y $puede ser retirado del patrón. Recuerde que las barras invertidas dobles de escape en el literal de cadena.

detalles

  • ^ - comenzar de cuerda
  • (?!\s) - no se permite ningún espacio en blanco inmediatamente a la derecha (al inicio de la cadena)
  • (?!.*\s[*?])- no se permite ningún espacio en blanco después de cualquier 0+ caracteres, tantos como sea posible, antes *o?
  • (?!.*[*?]\s)- no se permite ningún espacio en blanco después de cualquier 0+ caracteres, tantos como sea posible, después *o?
  • (?:[?\s]*[a-zA-Z0-9]){2} - dos secuencias de
    • [?\s]*- 0 o más ?o / y espacios en blanco
    • [a-zA-Z0-9] - char alfanumérica
  • [a-zA-Z0-9?\s]*- 0 o más letras, dígitos ?o espacios en blanco
  • \*?- opcional ?Char
  • $ - final de la cadena.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=214180&siteId=1
Recomendado
Clasificación