我有以下正则表达式:
Regex.IsMatch(someString, "[1-9][0-9]*\.[0-9]")
我希望someString
仅允许x.y
表单x > 0
和0 <= y <= 9
。
但它不能作为例外工作,例如:
someString = "1.02"
Regex.IsMatch(someString, "[1-9][0-9]*\.[0-9]")
等于true
,但不可以
我还尝试了另一个正则表达式:
Regex.IsMatch(someString, "[1-9][0-9]*\.[0-9]{1}")
但它没有任何区别......或者我的模式中是否缺少某些东西?
答案 0 :(得分:7)
您需要在此处使用行尾^
和行尾$
定位符,否则您将获得部分匹配,例如更改为:
^[1-9][0-9]*\.[0-9]$
您的原始表达式匹配1.02
的{{1}}的一部分,虽然它是有效的,但实际上单独使用时有效,锚点会阻止表达式匹配部分字符串并强制整个表达式匹配。