正则表达式用空格精确分隔 60 个数值

正则表达式用空格精确分隔 60 个数值

有人能帮我写一个正则表达式来表示空格分隔的 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*
  • 你也可以选择将它括在^...$

相关内容