有人能帮我写一个正则表达式来表示空格分隔的 60 个数值吗?这些值可以是浮点数或整数。
例如:“90.90 78.54 34 ....”(60 个值)或“89.43 90 34 ....”(60 个值)。
我尝试了以下一个
^(\s*([0-9]|[0-9.])+\s*){60}$
但是,这会导致浏览器崩溃。
答案1
你的表达存在一些问题:
^(\s*([0-9]|[0-9.])+\s*){60}$
- 为什么开头和结尾都有
\s*
?其中一个(结尾)就足够了 \s*
:为什么*
?空格不是可选的,数字之间必须有空格(如果你想要覆盖最后一个数字是字符串结尾的情况,那么你可以使用([0-9.]+\s+){59}[0-9.]+
([0-9]|[0-9.])
-[0-9.]
就足够了,为正则表达式引擎节省了很多步骤^...$
- 您想选择 60 个数字,还是仅验证一个字符串是否由 60 个数字组成?(您的方法显示了第二种方法)。
因此正确的表达应该是:
([0-9.]+\s+){59}[0-9.]+
,- 或包括前导空格和尾随空格:
\s*([0-9.]+\s+){59}[0-9.]+\s*
, - 你也可以选择将它括在
^...$