From 07a043df8d0d122236c549685b3c839df6aa6c81 Mon Sep 17 00:00:00 2001 From: Levende MOHAMMAD Date: Thu, 22 Sep 2022 16:51:15 +0200 Subject: [PATCH 1/3] refactor: allow uppercase in basic domain --- packages/regex/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/regex/src/index.ts b/packages/regex/src/index.ts index 73785350f..747d77e02 100644 --- a/packages/regex/src/index.ts +++ b/packages/regex/src/index.ts @@ -18,7 +18,7 @@ export const absoluteLinuxPath = /(^\/$|^(\/[a-zA-Z0-9_]+)*$)/ // eslint-disable-next-line no-control-regex 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 basicDomain = /^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,63})+$/ export const cron = /^[0-9,/*-]+$/ export const digits = /^[0-9]*$/ export const macAddress = From 2f54fd2d1c7e63c8aa896145476ae8b7a07f9f98 Mon Sep 17 00:00:00 2001 From: Levende MOHAMMAD Date: Thu, 22 Sep 2022 17:29:57 +0200 Subject: [PATCH 2/3] refactor: allow uppercase in basic domain --- packages/regex/src/__tests__/index.ts | 28 +++++++++++++++++++++++++++ packages/regex/src/index.ts | 5 ++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/regex/src/__tests__/index.ts b/packages/regex/src/__tests__/index.ts index 6709cab23..c4eca9fb3 100644 --- a/packages/regex/src/__tests__/index.ts +++ b/packages/regex/src/__tests__/index.ts @@ -18,6 +18,7 @@ import { ascii, backupKey, basicDomain, + basicDomainNotStrict, cron, digits, email, @@ -38,6 +39,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' @@ -455,6 +458,31 @@ describe('@regex', () => { expect(basicDomain.test(string)).toBe(expected) }) }) + describe('basicDomainNotStrict', () => { + 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(basicDomainNotStrict.test(string)).toBe(expected) + }) + }) describe('cron', () => { test.each([ diff --git a/packages/regex/src/index.ts b/packages/regex/src/index.ts index 747d77e02..d57c598bc 100644 --- a/packages/regex/src/index.ts +++ b/packages/regex/src/index.ts @@ -18,7 +18,10 @@ export const absoluteLinuxPath = /(^\/$|^(\/[a-zA-Z0-9_]+)*$)/ // eslint-disable-next-line no-control-regex export const ascii = /^[\x00-\x7F]+$/ export const backupKey = /^[A-Z0-9]{32}$/ -export const basicDomain = /^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,63})+$/ +export const basicDomain = /^[a-z0-9-]+(\.[a-z0-9-]{1,63})+$/ +export const basicDomainNotStrict = + /^(?![-])+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,63})+$/ + export const cron = /^[0-9,/*-]+$/ export const digits = /^[0-9]*$/ export const macAddress = From 9105caa81eb2804260da54322df378a4e60927e7 Mon Sep 17 00:00:00 2001 From: Levende MOHAMMAD Date: Fri, 23 Sep 2022 13:55:34 +0200 Subject: [PATCH 3/3] refactor: allow uppercase in basic domain --- packages/regex/src/__tests__/index.ts | 6 +++--- packages/regex/src/index.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/regex/src/__tests__/index.ts b/packages/regex/src/__tests__/index.ts index c4eca9fb3..12ae33c5b 100644 --- a/packages/regex/src/__tests__/index.ts +++ b/packages/regex/src/__tests__/index.ts @@ -18,7 +18,6 @@ import { ascii, backupKey, basicDomain, - basicDomainNotStrict, cron, digits, email, @@ -28,6 +27,7 @@ import { phone, sixDigitsCode, spaces, + uppercaseBasicDomain, url, } from '..' @@ -458,7 +458,7 @@ describe('@regex', () => { expect(basicDomain.test(string)).toBe(expected) }) }) - describe('basicDomainNotStrict', () => { + describe('uppercaseBasicDomain', () => { test.each([ [asciiLetters, false], [asciiLowercase, false], @@ -480,7 +480,7 @@ describe('@regex', () => { [macAddress1, false], ...(urls.map(urlString => [urlString, false]) as [string, boolean][]), ])('should match regex %s to be %s', (string, expected) => { - expect(basicDomainNotStrict.test(string)).toBe(expected) + expect(uppercaseBasicDomain.test(string)).toBe(expected) }) }) diff --git a/packages/regex/src/index.ts b/packages/regex/src/index.ts index d57c598bc..8f0df1591 100644 --- a/packages/regex/src/index.ts +++ b/packages/regex/src/index.ts @@ -19,7 +19,7 @@ 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 basicDomainNotStrict = +export const uppercaseBasicDomain = /^(?![-])+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,63})+$/ export const cron = /^[0-9,/*-]+$/