im working in Angular 13 project i want to create a directive to allow user only type numbers and '/' foor my date input. dd/mm/yyyy. this is my Regx :
if (!String(myVal).match(new RegExp(/^\d $/))) {
event.preventDefault();
}
this condition is working but i can type only numbers can't type / to format my date. any suggestion to moify my Regx.
Regards
CodePudding user response:
You can only type numbers with your Regex because ^\d $ only allows numbers. If you're looking for a RegEx to validate the final date, it would look like this:
"01/06/2022".match(/^\d{2}\/\d{2}\/\d{4}$/)
Explanation:
^matches the start of the string\d{2}matches exactly two digits\d{4}matches exactly four digits\/is an escaped forward slash (/), and you need to escape it$matches the end of the string- You don't need to explicitly instantiate
new RegExp, because that's done automatically when you define your Regex between the two/.
If you're looking for a Regex to only allow the typing of characters used in the date, it would look like this:
"01/06".match(/^[\d\/] $/)
Read that as "only match if there's at least one (that's what the means here) of the characters that are between [ and ], that is: either digits (\d) or /".
And of course there are other ways to validate a date once it's fully typed, apart from a Regex (the Regex would permit dates like 99/99/9999).
