我有以下正则表达式,它执行非常基本的验证,只允许整数,不应允许任何浮点数和负数.我发现以下表达式是这样做的方法之一:
var reg = new RegExp('^(([0-9]+)|\.[0-9]+)$');
Run Code Online (Sandbox Code Playgroud)
此表达式正确验证以下输入:
validatePercentage(56.67); --> not an integer
validatePercentage(67); --> integer
validatePercentage(-5667); --> should not be negative
Run Code Online (Sandbox Code Playgroud)
但是,我无法理解' \的用法.'在表达式中(某种程度上似乎对输出产生了影响).有人可以解释一下正则表达式是如何消除负面输入的?提前致谢.
. 正则表达式中的意思是"任何字符"\. 在正则表达式中的意思是"一个时期字符"\.在JavaScript字符串文字意味着..这段代码是尝试使用2,但由于正则表达式是使用字符串构造的(几乎总是一个错误),它最终会被转换为1.
正则表达式似乎是"零或正整数或小于1的正浮点数"的尝试,但被字符串阶段破坏为"零或正整数,其中任何一个字符都可以在任何字符之前".
正确的正则表达式可能更像是:
var reg = /^[1-9][0-9]+(?:\.0+)?$/
Run Code Online (Sandbox Code Playgroud)
如果你真的想要一个正整数的测试,那么你可能会更好:
value == parseInt(value, 10) && value > 0
Run Code Online (Sandbox Code Playgroud)
(如果要允许0作为值,则为> -1).
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |