dongzhan2029 2018-02-09 16:57
浏览 17
已采纳

使用正则表达式评估数字

I have a regex to evalute numbers

^\d*(?:,\d+)*(?:.\d+)?

These are some numbers to check it

12345 -- correct

.123 -- correct

23,456,789.123 --correct

123.456.7 -- wrong

  1. -- wrong

12345, -- wrong

123., -- wrong

,123 -- correct

but this last test case should be wrong. It should not be correct. Any help is accepted thank you

  • 写回答

3条回答 默认 最新

  • dongxuan2015 2018-02-09 17:10
    关注

    Try this regex:

    ^(?!,|$)\d*(?:,\d+)*(?:\.\d+)?$
    

    Click for Demo

    Explanation:

    • ^ - asserts the start of the line
    • (?!,|$) - negative lookahead to make sure that the current position is not followed by either a , or end of the line
    • \d* - matches 0+ occurrences of a digit
    • (?:,\d+)* - matches 0+ occurrences of (a , followed by 1+ digits)
    • (?:\.\d+)? - matches a . followed by 1+ occurrences of a digit. ? at the end makes this sub-sequence optional
    • $ - asserts the end of the line
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应