我需要使用正则表达式在带有位置信息的字符串中进行验证。
例子:
020005254877841100557810AAAAAA841158891BBBB
我需要将匹配位置 5 直到 10 并且必须只是数字。
如何使用 RegEx 执行此操作?
嗯,它真的必须是正则表达式吗?我会这样做的。
var myString = "020005254877841100557810AAAAAA841158891BBBB";
var isValid = myString.Substring(4, 5).All(Char.IsDigit);
如果您绝对必须使用正则表达式,那就是……(尽管我认为您应该使用类似 Jonas W 的答案)。
Match m = Regex.Match(myString, "^.{4}\d{5}.*");
if(m.Success){
//do stuff
}
正则表达式的意思是,“从字符串 (^) 的开头,匹配任何字符 (.{4}) 中的 4 个,然后是五个数字 (\d{5}),然后是任何其他字符 (.*) "
如果你真的觉得你必须使用正则表达式,这将是一个:
"^....\d{5}"
您还可以像这样进行多项检查:
"^....(\d{5}|\D{5})
那个将匹配所有数字或所有非数字字符,但不匹配混合或任何带有空格的字符。
以 FailedDev 提到的内容为基础。
string myString = "020005254877841100557810AAAAAA841158891BBBB";
myString.Substring(5, 5); //will get the substring at index 5 to 10.
double Num;
bool isNum = double.TryParse(myString, out Num); //returns true of all numbers
希望有帮助,