我需要一个符合以下模式的reg exp:
我尝试使用(^[\d.\]?|[0-9]*\.|[0-9]+|[0-9]+)
,但没有用。
它匹配n个点,但不匹配点后的数字
答案 0 :(得分:1)
这是接受验证
^(?:\d+(?:\.\d*)?|\.\d+)$
扩展
^
(?:
\d+
(?: \. \d* )?
|
\. \d+
)
$
这是按键后的验证
^(?:\d+(?:\.\d*)?|\.(?:\d+)?)$
答案 1 :(得分:0)
您获得了所有匹配项,因为您使用了3个交替(最后2个相同[0-9]+
)
交替的第一部分断言字符串^
的开始,实际上是一个字符类^[.\]?|[0-9]*
,它与列出的任何字符.]?|
或范围0匹配重复0+次-9。
此后,它需要匹配一个点,该点是字符串中的最后一个点,因为它也可以在字符类中匹配。然后其他交替匹配末尾的任何数字。
如果支持正向先行并且不允许空匹配,则可以使用正向先行检查是否存在至少一个数字或点。
然后匹配一个可选点,然后使用循环模式匹配1个以上的数字,然后匹配一个可选点。
^(?=[.\d])\.?(?:\d+\.?)*$
^
字符串的开头(?=[.\d])
声明点或数字\.?
匹配可选点(?:\d+\.?)*
重复0+次,匹配1+个数字和一个可选的点$
字符串结尾答案 2 :(得分:0)
我使用了此正则表达式:
^((\d*\.)(\d+\.)*)?\d*$
我的想法是: