1

我需要使用正则表达式在带有位置信息的字符串中进行验证。

例子:

020005254877841100557810AAAAAA841158891BBBB

我需要将匹配位置 5 直到 10 并且必须只是数字。

如何使用 RegEx 执行此操作?

4

4 回答 4

7

嗯,它真的必须是正则表达式吗?我会这样做的。

var myString = "020005254877841100557810AAAAAA841158891BBBB";
var isValid = myString.Substring(4, 5).All(Char.IsDigit);
于 2012-11-07T20:55:17.767 回答
6

如果您绝对必须使用正则表达式,那就是……(尽管我认为您应该使用类似 Jonas W 的答案)。

Match m = Regex.Match(myString, "^.{4}\d{5}.*");

if(m.Success){
    //do stuff
}

正则表达式的意思是,“从字符串 (^) 的开头,匹配任何字符 (.{4}) 中的 4 个,然后是五个数字 (\d{5}),然后是任何其他字符 (.*) "

于 2012-11-07T21:07:45.620 回答
0

如果你真的觉得你必须使用正则表达式,这将是一个:

"^....\d{5}"

您还可以像这样进行多项检查:

"^....(\d{5}|\D{5})

那个将匹配所有数字或所有非数字字符,但不匹配混合或任何带有空格的字符。

于 2012-11-07T21:09:40.077 回答
-1

以 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

希望有帮助,

于 2012-11-07T20:58:12.467 回答