diff --git a/packages/regex/src/__tests__/index.ts b/packages/regex/src/__tests__/index.ts index 33396d3b0..8c0be06e8 100644 --- a/packages/regex/src/__tests__/index.ts +++ b/packages/regex/src/__tests__/index.ts @@ -33,6 +33,7 @@ import { phone, sixDigitsCode, spaces, + uppercaseBasicDomain, url, } from '..' @@ -44,6 +45,8 @@ const asciiUppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' const backupKeyTest = '123456789ABCEDFGHIJIKLMNOPQRSTUV' const domain = 'another-example.com' const subDomain = 'sub.another-example.com' +const dashStartDomain = '-sub.another-example.com' +const uppercaseDomain = 'SUB.another-example.com' const longTldDomain = 'sub.another-example.verylongtld' const cronTest = '0/15*-' const digitsTest = '0123456789' @@ -461,6 +464,31 @@ describe('@regex', () => { expect(basicDomain.test(string)).toBe(expected) }) }) + describe('uppercaseBasicDomain', () => { + test.each([ + [asciiLetters, false], + [asciiLowercase, false], + [asciiUppercase, false], + [backupKeyTest, false], + [domain, true], + [subDomain, true], + [dashStartDomain, false], + [uppercaseDomain, true], + [longTldDomain, true], + [digitsTest, false], + [emailTest, false], + [octdigits, false], + [hexdigits, false], + [printable, false], + [punctuation, false], + [whitespace, false], + [cronTest, false], + [macAddress1, false], + ...(urls.map(urlString => [urlString, false]) as [string, boolean][]), + ])('should match regex %s to be %s', (string, expected) => { + expect(uppercaseBasicDomain.test(string)).toBe(expected) + }) + }) describe('cron', () => { test.each([ diff --git a/packages/regex/src/index.ts b/packages/regex/src/index.ts index 7088d9c6a..026301eaf 100644 --- a/packages/regex/src/index.ts +++ b/packages/regex/src/index.ts @@ -19,6 +19,9 @@ export const absoluteLinuxPath = /(^\/$|^(\/[a-zA-Z0-9_]+)*$)/ export const ascii = /^[\x00-\x7F]+$/ export const backupKey = /^[A-Z0-9]{32}$/ export const basicDomain = /^[a-z0-9-]+(\.[a-z0-9-]{1,63})+$/ +export const uppercaseBasicDomain = + /^(?![-])+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,63})+$/ + export const cron = /^[0-9,/*-]+$/ export const digits = /^[0-9]*$/ export const macAddress =