[英]Invalid regular expression, Invalid group Javascript Regex
我有一個 C# 代碼,用於在正則表達式的基礎上檢查 falseNumber:
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'));
x
修飾符不是在 JS 中內置的,這就是您收到錯誤的原因。 在您的情況下,您不需要使用x
修飾符,因為您在 JS 的正則表達式中不使用注釋或有任何空格。
x
修飾符定義:
該標志告訴引擎忽略所有空格並允許在正則表達式中添加注釋; 也稱為冗長。 注釋由開始的“#”字符表示。 如果您需要在您的正則表達式中包含一個空格字符,現在必須將其轉義為“\”。
const falseNumber = (num) => { num = num.replaceAll("-", ""); let re = /^(??(\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'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.