我已经有正则表达式,只允许数字和点.
但它允许多个点.就我而言,我只想要一个点.
/[0-9.]/
Run Code Online (Sandbox Code Playgroud)
Asu*_*nez 14
简短回答:
([0-9]+(\.[0-9]+)?)
答案
很长:你使用的正则表达式无效.让我们分解一下:
[]- 方括号表示您要匹配列表中的字符
0-9- 这是一系列字符,因此将匹配0到9之间的数字
.- 字面点符号(仅在方括号内)
但现在发生的是,你只会匹配一个数字或一个点字符(" .").您希望允许更多这些匹配整数.您可以通过追加*(零或更多)或+(一个或多个)来完成此操作.但如果你像这样追加它:
[0-9.]*123.456.789匹配的数字将是匹配的,这是不希望的.
要解决这个问题,我们需要做一些调整:/ ^([0-9]+(\.[0-9]+)?)/
现在这个正则表达式意味着:匹配任意数量的数字,然后(如果适用)允许一个点后跟另一组数字.请注意,末尾有一个问号zero or one occurrences,因此不会一遍又一遍地重复.另请注意,要仅包含点,您需要通过在\其前面添加一个字符来逃避它,因为它不再位于方括号中.在开头(^)的破折号确保它是字符串/行的开头.
在这里试试:regex101.com