簡體   English   中英

匹配 10 位交替數字

[英]Match 10 digit alternating numbers

我想要一個匹配 10 位交替數字的正則表達式,如1212121212 3434343434等等。 我知道這不是在這里提問的正確方式。 但是我從我身邊嘗試了很多我無法弄清楚所以伸出援手。

不能是 1313131313。我應該是下一個號碼。

如果字符串總是 10 個字符長並且我們總是有個位數,那么只需取前兩個字符,重復 5 次並比較:

const check = str => {
  const a = +str[0];
  const b = +str[1];
  return a+1 === b && `${a}${b}`.repeat(5) === str;
};

check('1212121212');
//=> true

check('1212121215');
//=> false

check('1313131313');
//=> false

如果重復總是兩個數字,您可以執行類似(\\d\\d)\\1{4}

這是創建一個具有兩位數(\\d\\d) ,在一行\\1{4}找到與前四次相同的匹配項。

您也可以使用Array.from並指定長度和偏移量來獲取下一個數字的交替:

 const alternating = (len, offset) => Array.from({ length: len }, (_, index) => (index % 2) + offset).join(''); console.log(alternating(10, 1) === "1212121212"); console.log(alternating(10, 3) === "3434343434"); console.log(alternating(10, 2) === "1313131313");

對於純正則表達式,您只需要計算出不同的組合,因為正則表達式不支持數字的概念及其序列; 一切都是一串字符。

^(01|12|23|34|45|56|67|78|89)\1{4}$

如果9090909090有效,則:

^(01|12|23|34|45|56|67|78|89|90)\1{4}$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM