![](/img/trans.png)
[英]Regex to match any set of numbers except the 10 digit numbers starting with 7
[英]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.