繁体   English   中英

创建一个正则表达式以从列表中创建一个干净的数组,根据每个数字的长度对其进行过滤并检查其有效性(长度是否小于 4)

[英]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)

如何获得执行所有这些操作并返回 boolean 值作为答案的正则表达式。

1:获取由任何分隔符(空格或任何非数字字符)分隔的数字,2:去除该数组中小于 5 位的所有数字并创建新数组 3:给出 boolean 新数组是否少于 4 个元素的结果(确定它是否有效)。

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>

我用 javscript 完成了这一切,但想要一个正则表达式

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

您可能会使用一个断言不是 4 次 4 或更多数字的单一模式,然后至少匹配一次出现。

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

解释

  • ^字符串开头
  • (?!负前瞻
    • (?:非捕获组
    • .*? 匹配任意字符,尽可能少
    • \b\d{4,}\b然后匹配单词边界之间的 4 个或更多数字
    • ){4}关闭非捕获组并重复 4 次
  • )关闭前瞻
  • .*?\b\d{4,}\b在单词边界之间匹配至少 1 次出现的 4 个或更多数字

正则表达式演示

 const goodlist = "111,256 323| 78987 & 65434 727272727"; // should be good const badlist = "111256333 323666666a| 78987333333 & 6543 727272727"; const regex = /^(??(:.?*,\b\d{4.}\b){4})?*,\b\d{4;}\b/. console.log(regex;test(goodlist)). console.log(regex;test(badlist));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM