【发布时间】:2022-01-25 10:14:26
【问题描述】:
我有一个基于正则表达式检查 falseNumber 的 C# 代码:
public bool falseNumber(string num)
{
try
{
num = num.Replace("-", "");
string re = @"(?x)
^
# fail if...
(?!
# repeating numbers
(\d) \1+ $
|
# sequential ascending
(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5} \d $
|
# sequential descending
(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5} \d $
)
# match any other combinations of 6 digits
\d+
$
";
return Regex.IsMatch(num, re);
}
catch (Exception y) { return true; }
}
我需要把这段代码转成JS,所以写了:
const falseNumber = (num) =>
{
num = num.replaceAll("-", "");
let re = /(?x)^(?!(\d)\1+$|(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5}\d$|(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5}\d$)\d+$/
return re.test(num);
}
但这给了我错误:
VM46:5 Uncaught SyntaxError: 无效的正则表达式: /((?x)^(?!(\d) \1+ $|(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(? =7)|7(?=8)|8(?=9)|9(?=0)){5} \d $|(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(? =5)|7(?=6)|8(?=7)|9(?=8)){5} \d $)\d+$)/: 无效组 在 falseNumber (:5:12) 在:1:1
任何帮助将不胜感激。
谢谢。
const falseNumber = (num) =>
{
num = num.replaceAll("-", "");
let re = /(?x)^(?!(\d)\1+$|(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5}\d$|(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5}\d$)\d+$/
return re.test(num);
}
console.log(falseNumber('33-3333333-33'));
【问题讨论】:
标签: javascript c# regex