I want to accept values in any of the following format:
Is it possible to do that using Masked Input Plugin?
If not, what plug-in am I looking for?
How do I indicate a character is optional?
The code I've got so far
$.mask.definitions['~']='[ +-]';
$(".currency").mask("~$9");
Here is how i would implement the validation rule :
$('.myinput').val().match(/^[+-]?\$\d(?:\.\d\d)?$/)
The problem with your pattern is that it is not fixed-length, so hard to code in mask, and you may encounter some people giving $3.5, which is not what you want. With such a pattern of yours, I think it will be hard not to fall back on regexp matching.
You may consider making the cent part mandatory, in which case your pattern is almost ok, just add .99 at the end and it should do it (although as a user I would hate to have to start my currency with a space character...).