C#Regex.Split的工作方式与JavaScript不同

You*_*jae 9 javascript c# regex cjk

我正在尝试将这个长JS正则表达式转换为C#.

下面的JS代码从数组开始给出29个项目["","?","","?","","??","?","??"...]

var keywords = /(\ |[a-zA-Z0-9]+\.[a-z]{2,}|[?-??????]+|[?-??]+|[?-??]+|[a-zA-Z0-9]+|[?-??-??-?]+)/g;
var source = '?????????????Android?????????????';
var result = source.split(keywords);
Run Code Online (Sandbox Code Playgroud)

C#代码列出了非分裂单个项目string[].

var keywords = @"/(\ |[a-zA-Z0-9]+\.[a-z]{2,}|[?-??????]+|[?-??]+|[?-??]+|[a-zA-Z0-9]+|[?-??-??-?]+)/g";
var source = @"?????????????Android?????????????";
var result = Regex.Split(source, keywords);
Run Code Online (Sandbox Code Playgroud)

Stack Overflow中的许多问题仅涵盖相对简单的表达式,因此我无法找到错误.

我错过了什么?

Pou*_*Bak 14

您的RegEx是错误的,您不应该以开头和结尾为止,'/'或者'/g'您在构造函数中指定一个字符串,而不是JavaScript Regex(带有'/ /'语法.).这是一个Javascript语法.

实际上,当您使用这样的字符串构造函数时,同样适用于JavaScript:

var regex = new RegExp('//'); //这将匹配2个斜杠