正则表达式:为什么@"^([0-9] | 10)"不匹配'10'?

lau*_*ura 1 regex asp.net asp.net-mvc-2

我想验证一个文本框只包含0和之间的数字10.

这是我目前正在使用的正则表达式:

@"^([0-9]|10)"
Run Code Online (Sandbox Code Playgroud)

但它只匹配0-9.我应该改变什么才能使它匹配10

谢谢!

Bar*_*ers 15

110被匹配[0-9],因为正则表达式引擎匹配由左到右.并且由于您只锚定了输入开始:^,如果1匹配,则引擎会满意.

有两种解决方案.

1 - 交换它:

@"^(10|[0-9])"
Run Code Online (Sandbox Code Playgroud)

要么

2 - 锚定它$:

@"^([0-9]|10)$"
Run Code Online (Sandbox Code Playgroud)