validate test regulares regexp probar only expresiones example javascript regex numbers operators

test - regexp javascript



Javascript regex O | (5)

Ambas reglas llegaron a una:

^/d{1,5}$|^/d{0,5}/./d{1,4}$

Aquí hay un ejemplo de trabajo

Actualmente estoy buscando cómo escribir correctamente una expresión regular para esta aplicación:

1 - Un número sin "." con una longitud de 1 a 5 dígitos => /^(/d{1,5})$/
2 - Un número con "." con una longitud de 1 a 5 dígitos antes del "." y de 1 a 4 dígitos después del "." o un número que comienza con "." con una longitud de 1 a 4 dígitos después del "." => /^(/d{1,5})?/.?(/d{1,4})?$/

Intenté usar un operador o "|", pero no funciona; (=> /^(/d{1,5})?/.?(/d{1,4})?$|^(/d{1,5})$/ No entiendo por qué, es mi primer regex de script java y no estoy seguro de usar bien el operador "|".

Siguiendo las respuestas que me gustaría obtener con 1 expresión regular:

123 => ok 12345 => ok 123456 => not ok 12345.2156 => ok 123456.12 => not ok 12345.12345 => not ok

Muchas gracias por su ayuda. Que tengas un buen día.

Etienne


Mejor uso con Array#split . Da el mismo resultado que lo que se espera del patrón regex.

function check(a){ var c= a.toString().split("."); return c[1]? ((c[0].length <= 5) && (c[1].length <= 4)) ? true : false : c[0].length <= 5 ? true : false; } console.log(check(123)) console.log(check(12345)) console.log(check(123456)) console.log(check(12345.2156)) console.log(check(123456.12)) console.log(check(12345.12345))


Para usar el operador o si desea capturar el valor que coincida, debe ajustar la expresión regular entre paréntesis /(...)/ y dividir el registro con un /(...|...)/ .

const checkNum = s => console.log(s, /^(/d{1,5}|/d{1,5}/./d{4})*$/.test(s)) checkNum(''55555.4444'') checkNum(''88888'') checkNum(''88888.22'')


Puede verificar la segunda parte como opcional.

function check(v) { return /^(?=.)/d{0,5}(/./d{1,4})?$/.test(v); } console.log(['''', ''.123'', 123, 12345, 12345.2156, 123456, 123456.12, 12345.12345].map(check));