Tengo el Regex para que coincida con los siguientes patrones,
Enlace al caso de uso: https://regex101.com/r/wnp1k4/1
¿Cómo puedo obtener la coincidencia para lo mismo modificando Regex? por favor ayuda.
(?:^|(?<=[\D;a-zA-Z(),.:;?!"'`>]))(?!000|666|9)(?<![Oo][Rr][Dd][Ee][Rr].)(?<![Oo][Rr][Dd][Ee][Rr]..)(?<![Oo][Rr][Dd][Ee][Rr]...)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr].)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr]..)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr]...)(?<![Xx])\d{3}[ -.=\n\r]{0,10}(?!00)\d{2}[ -.=\n\r]{0,10}(?!0000)\d{4}(?:$|(?=[\Da-zA-Z(),.:;?!"'`<= ]))Los números de pedido no deberían detectarse si 'X o x' precede al número. así que esto está funcionando bien.
x123456789
X123456789
x123-456-789
X123-456-789
123-456-789
Es necesario modificar el patrón de expresiones regulares para obtener la coincidencia de la lista de números de pedido escritos como se muestra a continuación... junto con la palabra (número de pedido) no debe distinguir entre mayúsculas y minúsculas.
número de pedido123-456-789
número de pedido123-456789
número de pedido 123456789
123-456789
123456789
número de pedido-123456787
número de pedido - 123456789
número de pedido #123456789
número de pedido anysplcharacter 123456789
Convirtiendo mi comentario en respuesta para que la solución sea fácil de encontrar para futuros visitantes.
Puede usar esta expresión regular:
(?<!\d)(?!000|666|9)(order\W?number)?\W*(?<!x)\d{3}[ .=-]{0,10}(?!000)\d{3}[ .=-]{0,10}(?!000)\d{3}Detalles RegEx:
(?<!\d) : Asegúrese de que el carácter anterior no sea un dígito(?!000|666|9) : Asegúrese de que no tengamos 000 o 666 o 9 en la siguiente posición(order\W?number)? : order de coincidencia y number opcionalmente separados con un carácter que no es una palabra\W* : coincide con 0 o más caracteres que no son palabras(?<!x) : Asegúrese de que el carácter anterior no sea x\d{3} : Combina 3 dígitos[ .=-]{0,10} : Coincidencia de 0 a 10 instancias de separadores dados(?!000) : asegúrese de que no tengamos 000 en la siguiente posición\d{3} : Combina 3 dígitos[ .=-]{0,10} : Coincidencia de 0 a 10 instancias de separadores dados(?!000) : asegúrese de que no tengamos 000 en la siguiente posición\d{3} : Combina 3 dígitos/((?<key>order\s*number).*)?(?<!x)(?<value>\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})/gim
const multilineSample = `x123456789 X123456789 x123-456-789 X123-456-789 123-456-789 ordernumber123-456-789 order number123-456789 order number 123456789 123-456789 123456789 ordernumber-x123456787 ordernumber-123456787 ordernumber - 123456789 ordernumber #123456789 ordernumber *anysplcharacter*123456789 ordernumber !@#$%^&123456789 ordernumber !@#$%^&x123456789`; const regXOrderNumber = // see ... [https://regex101.com/r/wnp1k4/6] /((?<key>order\s*number).*)?(?<!x)(?<value>\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})/gim; console.log( 'all results each with its mapped named capture group ...', Array.from( multilineSample.matchAll(regXOrderNumber) ) .map(({ groups }) => groups) ); .as-console-wrapper { min-height: 100%!important; top: 0; }prueba esto.
^([^x]|(order\s?number\s?)(\s?[-|#]?\s?))(anysplcharacter)?([\d-]+)$¿Hay otro caso?