El patrón sería:
^\$\d{0,6}(\.\d{0,2})?$
Esto no comprueba si hay algún modo dígitos "$". es una coincidencia válida y un resultado válido dados los requisitos originales del cuestionario.
Para explicar:
^
medios solamente con la regla si no hay nada antes de la cadena que estoy buscando, es decir, "USD $ 123.45" fallaría en este ejemplo como el $ (emparejado con el \$
) no es inmediatamente después del comienzo de la cadena.
\$
coincide con $ character, el uso de la barra diagonal inversa() se llama escaping y se utiliza para permitir coincidir caracteres reservados (que significan algo en el contexto de la expresión regular) en este caso $ que significa coinciden con final de la cadena, es decir, no hay caracteres después de este punto
\d
coincidirá con cualquier carácter decimal, es decir 0-9
{n,m}
coincidirá con el de n a m instancias del elemento precedente, si n es 0, entonces efectivamente significa que el partido es opcional.
\.
coincidirá con el punto decimal, se ha escapado como. es un carácter reservado en la expresión regular que significa emparejar cualquier carácter
(...)
trae la expresión regular incluida en conjunto como un grupo, hay otras consecuencias pero te dejo explorar.En este caso, es puramente para beneficio del siguiente carácter en la expresión regular
?
coincidirá con 0 o 1 del elemento anterior (en este caso, el grupo que busca un punto decimal y hasta 2 caracteres decimales, así que esperamos que no haya punto decimal con caracteres finales (0 ocurrencias) o un punto decimal con hasta 2 caracteres decimales (1 aparición))
$
coincide con el final de la cadena, no puede haber caracteres en el cadena después de este punto.
Creo que hay atajos/alias de expresiones regulares para los dígitos decimales, por lo que todas estas sugerencias que contengan [0-9] podrían reemplazarse por esas. –
Es cierto y definitivamente vale la pena señalarlo. Siempre me gusta usar más explícitos si la forma larga no es mucho más que los accesos directos. Para cosas como el espacio en blanco es molesto escribirlo en su totalidad, para los de tipo alfanumérico me parece que son más fáciles de leer para las personas menos acostumbradas a expresiones regulares (y por lo tanto los accesos directos de clase de caracteres). – Chris
No hay importes en dólares negativos, por ejemplo, reembolsos? –