[Editted]
我对正则表达式相对较新,现在我正面临一个用例,其中目标字符串应该只包含一个点'.'
。更具体地说,我正在进行浮点检测,我认为它应该只包含一个点和一个指数" e"。
我的正则表达式现在看起来像这样:(?=.*[0-9]{1,})(?=.*[\.][0-9])(?=.*[eE][+-]?[1-9])
。它似乎正在研究测试字符串,如:
2.1E12
3.141E23
但是一旦我测试:
1.15E10.34
它仍然过去了。
有谁知道我在这里做错了什么?还有人可以推荐一个学习正则表达式的好资源吗?
谢谢!
答案 0 :(得分:3)
要验证表示为字符串的浮点数,请使用以下模式:
^[0-9]*\.[0-9]+([eE][0-9]+)?$
这将验证您有:
当然,这假设字符串只是您要测试的数字,正如您的问题所示。如果是这种情况,我们可以删除任何需要外观的方法。
根据您的语言,简单地尝试将字符串转换为浮点数来捕捉失败可能更为优雅。
答案 1 :(得分:0)
A)如果您只想匹配'。' (带有len 1和char [0]的字符串=='。',您可以使用
^\.$
B)如果你想匹配任何长度的字符串,只有一个点,你可以使用
[^\.]\.[^\.]
你能否发表评论告诉我你想要哪个案例(A / B),我可以帮助改进答案
答案 2 :(得分:0)