Javascript中对应的Regexp

Javascript中对应的Regexp,javascript,regex,Javascript,Regex,我有下面的regexp,它应该检测c#中的“123456”或“654321”等序列数字,但不能将其转换为相应的javascript regexp字符串 string re = @"(?x) ^ # fail if... (?! # sequential ascending (?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)

我有下面的regexp,它应该检测c#中的“123456”或“654321”等序列数字,但不能将其转换为相应的javascript regexp字符串

string re = @"(?x)
        ^
        # fail if...
        (?!
            # sequential ascending
            (?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5} \d $
            |
            # sequential descending
            (?:1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5} \d $
        )
    ";
我尝试了以下Javascript,但似乎总是返回true:

var re = new RegExp("^(?!(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5} \d $|(?:1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5} \d $)");
var isMatch = re.test(str);

由于JavaScript正则表达式引擎不支持自由空间(verbose)正则表达式模式(使用
(?x)
内联修饰符启用),因此需要从模式中删除所有格式空白

在JS中,最好使用正则表达式文字符号,以避免选择正确数量的反斜杠来转义特殊正则表达式元字符:

var re = /^(?!(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}\d$|(?:1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5}\d$)/;

正如我提到的,删除所有空格@WiktorStribiżew我做了,但它仍然对“123456”和“135468”都测试为真。
123456
不匹配,
135468
根据正则表达式看起来有效。在@WiktorStribiżew上也得到了同样的结果,显然我需要将后斜杠加倍,因为它们被评估为转义字符。为什么不使用一个函数逐个字母处理字符串?