验证正则表达式不允许单个数字 0
Posted
技术标签:
【中文标题】验证正则表达式不允许单个数字 0【英文标题】:Validation Regex to disallow a single digit 0 【发布时间】:2018-05-25 08:53:01 【问题描述】:我尝试了许多示例来禁止单个数字 0
。最接近的工作是[^0]
,但匹配20
、30
等。我只想匹配0
。
【问题讨论】:
请提供示例。例如,"0"
、"0.0"
、"-0"
、"+0"
、"00"
、"zero: 0"
、"0-0-0"
、" 0 "
(空格)中的哪一个应该匹配?
Regex - Match whole string的可能重复
【参考方案1】:
使用开始和结束锚点来匹配整个输入为零:
^0$
或者要匹配字符串中的单个零,请使用单词边界:
\b0\b
不允许在输入中使用单独的零,在否定前瞻中使用上述内容。
^(?!.*\b0\b).*
【讨论】:
谢谢波西米亚人。我正在尝试将“regExp”与 data-dojo-props 一起使用,以不允许在该字段中使用“0”,尽管允许正数和负数。使用 ^0$ 时,它“匹配”任何数字(5、6、7 等)。 data-dojo-props="constraints:min:-90,max:90,places:0, required:true, invalidMessage:'纬度是-90到90', regExp:'^0$', invalidMessage: '纬度不能为0'" />度 @JWK 我认为您的代码示例应该在原始问题中,所以请 edit it! 它有助于更好地展示您想要实现的目标。跨度> 【参考方案2】:如果您不希望匹配零,但希望允许使用正数和负数。这使用锚点 ^
和 $
来断言字符串的开始和结束。
^[+-]?[1-9][0-9]*$
不使用锚点,您可以使用单词边界\b
:
[+-]?\b[1-9][0-9]*\b
这将匹配一个可选的加号或减号 [+-]?
,一个从 1 到 9 的数字 [1-9]
,因此它不匹配一个零后跟零次或多次数字 [0-9]*
【讨论】:
这可能是吹毛求疵 :-) 但它允许0.0
。这不是问题,但似乎本着它的精神也不允许这样做。
@第四只鸟-谢谢!做到了。我正在拔头发。
@PeterB 你确定这匹配0.0
吗? test 1 和 test 2以上是关于验证正则表达式不允许单个数字 0的主要内容,如果未能解决你的问题,请参考以下文章