mirror of
https://github.com/bitwarden/browser
synced 2025-12-11 13:53:34 +00:00
* simplify logic and fix some pattern-matching bugs * add first pass at parsing combined expiry year and month from user input * clean up code * fix broken three-digit parsing case * fix case where splitCombinedDateValues returns empty strings when the input is only a delimiter * fix incorrect expectation of falsy negative integers * clean up code * split out logic from parseYearMonthExpiry * move utils from vault to autofill
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
export const CardExpiryDateDelimiters: string[] = ["/", "-", ".", " "];
|
|
|
|
// `CardExpiryDateDelimiters` is not intended solely for regex consumption,
|
|
// so we need to format it here
|
|
export const ExpiryDateDelimitersPattern =
|
|
"\\" +
|
|
CardExpiryDateDelimiters.join("\\")
|
|
// replace space character with the regex whitespace character class
|
|
.replace(" ", "s");
|
|
|
|
export const MonthPattern = "(([1]{1}[0-2]{1})|(0?[1-9]{1}))";
|
|
|
|
// Because we're dealing with expiry dates, we assume the year will be in current or next century (as of 2024)
|
|
export const ExpiryFullYearPattern = "2[0-1]{1}\\d{2}";
|
|
|
|
export const DelimiterPatternExpression = new RegExp(`[${ExpiryDateDelimitersPattern}]`, "g");
|
|
|
|
export const IrrelevantExpiryCharactersPatternExpression = new RegExp(
|
|
// "nor digits" to ensure numbers are removed from guidance pattern, which aren't covered by ^\w
|
|
`[^\\d${ExpiryDateDelimitersPattern}]`,
|
|
"g",
|
|
);
|
|
|
|
export const MonthPatternExpression = new RegExp(`^${MonthPattern}$`);
|
|
|
|
export const ExpiryFullYearPatternExpression = new RegExp(`^${ExpiryFullYearPattern}$`);
|