检查字符串是否只包含数字
我想检查 string
是否仅包含数字。我使用了这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但意识到它还允许 +
和 -
。基本上,我想确保输入仅包含数字而不包含其他字符。由于 +100
和 -5
都是数字,因此 isNaN()
不是正确的方法。 也许正则表达式就是我需要的?有什么建议吗?
I want to check if a string
contains only digits. I used this:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
But realized that it also allows +
and -
. Basically, I want to make sure an input
contains ONLY digits and no other characters. Since +100
and -5
are both numbers, isNaN()
is not the right way to go.
Perhaps a regexp is what I need? Any tips?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
如果您甚至想支持浮点值(点分隔值),那么您可以使用以下表达式:
If you want to even support for float values (Dot separated values) then you can use this expression :
这是另一种有趣、可读的方法来检查字符串是否只包含数字。
此方法的工作原理是使用 spread 将字符串拆分为数组运算符,然后使用 < code>every() 方法测试数组中的所有元素(字符)是否包含在数字字符串
'0123456789'
中:Here's another interesting, readable way to check if a string contains only digits.
This method works by splitting the string into an array using the spread operator, and then uses the
every()
method to test whether all elements (characters) in the array are included in the string of digits'0123456789'
:这是不使用正则表达式的解决方案:
其中 48 和 57 分别是“0”和“9”的字符代码。
Here is a solution without using regular expressions:
where 48 and 57 are the char codes for "0" and "9", respectively.
这就是你想要的
This is what you want
如果您需要在同一验证中使用整数和浮点
/^\d+\.\d+$|^\d+$/.test(val)
in case you need integer and float at same validation
/^\d+\.\d+$|^\d+$/.test(val)
不过,对于带有前导零或尾随零的字符串,这将返回
false
。Though this will return
false
on strings with leading or trailing zeroes.那么,您可以使用以下正则表达式:
Well, you can use the following regex:
如果您想包含浮点值,也可以使用以下代码,
这将仅测试数字和以“.”分隔的数字。第一个测试将涵盖 0.1 和 0 等值,但也涵盖 .1 ,
它不允许 0。所以我建议的解决方案是反转 theValue,这样 .1 将是 1。那么相同的正则表达式将不允许它。
例子 :
if you want to include float values also you can use the following code
this will test for only digits and digits separated with '.' the first test will cover values such as 0.1 and 0 but also .1 ,
it will not allow 0. so the solution that I propose is to reverse theValue so .1 will be 1. then the same regular expression will not allow it .
example :
如果您想为
.
留出空间,您可以尝试以下正则表达式。If you want to leave room for
.
you can try the below regex.如果您使用 jQuery:
If you use jQuery:
这有效:
This works:
这是不使用正则表达式的解决方案
Here's a Solution without using regex
如果字符串仅包含数字,则返回 null
If a string contains only digits it will return null
怎么样
how about