Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

122
Views
Create a regex for create a clean array from a list, filter it based on a length of each number and check its validity(whether length is less that 4)

How to get a regex that does all of this and returns a boolean value as answer.

1: gets numbers separated by any delimiter (space or any non numeric character), 2: strips off all numbers in that array less than 5 digits and creates new array 3: gives boolean result as to whether the new array has less than 4 elements(that determines whether it is valid). 4: If the input string has only characters, then the regex test should pass

const goodlist = "111,256 323| 78987 & 65434 727272727"; // should be good
const badlist = "111256333 323666666a| 78987333333 & 6543 727272727";
let numberPattern = /\d+/g;
let numbersArr1 = goodlist.match(numberPattern);
let filArr1 = numbersArr1.filter((w) => w.length > 4);
let numbersArr2 = badlist.match(numberPattern);
let filArr2 = numbersArr2.filter((w) => w.length > 4);
console.log(numbersArr1, numbersArr2);
const isGoodListOK = filArr1.length < 4;
const isBadListOK = filArr2.length < 4;

document.getElementById("app").innerHTML = `
<div>Input string: ${goodlist}</div>
<br/>
<div>Formatted input: ${numbersArr1} : Filtered Array: ${filArr1}</div>
div>is this list ok: ${isGoodListOK}</div>
<br/>
<br/>

<br/>
<br/>

<div>Input string: ${badlist}</div>
<br/>
<div>Formatted input: ${numbersArr2} : Filtered Array: ${filArr2}</div>
<div>is this list ok: ${isBadListOK}</div>

I got this all done in javscript, but would like a single regex

https://codesandbox.io/s/simple-regex-to-check-date-format-forked-l1c6pl?file=/src/index.js

almost 4 years ago · Santiago Trujillo
1 answers
Answer question

0

You might use a single pattern that asserts not 4 times 4 or more digits, and then match at least a single occurrence.

^(?!(?:.*?\b\d{4,}\b){4}).+

Explanation

  • ^ Start of string
  • (?! Negative lookahead
    • (?: Non capture group
    • .*? Match any character, as few as possible
    • \b\d{4,}\b Then match 4 or more digits between word boundaries
    • ){4} Close the non capture group and repeat it 4 times
  • ) Close the lookahead
  • .+ Match either till the first occurrence of 4 digits between word boundaries, or match the whole line consisting only of spaces or characters A-Za-z

Regex demo

const goodlist = "111,256 323| 78987 & 65434 727272727"; // should be good
const badlist = "111256333 323666666a| 78987333333 & 6543 727272727";
const goodlist2 = 'Harry Potter'
const goodlist3 = '123 | 111 | 233 | 534'

const regex = /^(?!(?:.*?\b\d{4,}\b){4}).+/;

console.log(regex.test(goodlist));
console.log(regex.test(badlist));
console.log(regex.test(goodlist2));
console.log(regex.test(goodlist3));

almost 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!