2012-11-15 215 views
1

问题试验无符号整数(UINT):如何测试/检查的值在是一个无符号整数(UINT)的JavaScript(教学)的JavaScript - 使用正则表达式(正则表达式)

备选答案: 由于去改进本回答以下!

@jbabeyif Number(val) > 0

@SLaksif (/^\d+$/.test(someString))


关于:这说明如何测试/检查的值是无符号整数(UINT)在JavaScript


使用JS: isUINT(value);


返回TrueFalse


扩展版本

<script type="text/javascript"> 
    function isUINT(v) 
    { 
     var r = RegExp(/(^[^\-]{0,1})?(^[\d]*)$/); 
     return r.test(v) && v.length > 0; 
    } 
</script> 

精缩版

function isUINT(v){var r=RegExp(/(^[^\-]{0,1})?(^[\d]*)$/);return r.test(v)&&v.length>0} 

评论/替换欢迎!

+2

,我不认为这个问题是有道理的。 JavaScript中没有“无符号”类型,所以* no *值将永远不会是“无符号整数”。如果你只是指“非负整数”,那么比正则表达式有更好的方法。 – Pointy

+1

'如果Number(val)> 0' – jbabey

+0

@Pointy:正确。 JavaScript中没有这种“未签名”类型的东西。我想做一个。 –

回答

-1

备选答案: 由于去改进本回答以下!

@jbabeyif Number(val) > 0

@SLaksif (/^\d+$/.test(someString))


关于:这说明如何测试/检查的值是无符号整数(UINT)在JavaScript


使用JS: isUINT(value);


返回TrueFalse


扩展版本

<script type="text/javascript"> 
    function isUINT(v) 
    { 
     var r = RegExp(/(^[^\-]{0,1})?(^[\d]*)$/); 
     return r.test(v) && v.length > 0; 
    } 
</script> 

精缩版

function isUINT(v){var r=RegExp(/(^[^\-]{0,1})?(^[\d]*)$/);return r.test(v)&&v.length>0} 

评论/替换欢迎!

+1

你的正则表达式不必要的复杂。 – SLaks

+0

我不认为这甚至有效。当您使用本机语法构建正则表达式时,也没有理由调用RegExp构造函数。 – Pointy

+2

@Pointy:它确实有效,因为第二个'^'使得第一个组不匹配任何东西。 – SLaks

6
if (/^\d+$/.test(someString)) 

+0

谢谢你这篇精辟的帖子!这很简单,重要。 我对JS的RegExp做了一些更多的研究,发现它不是语言的本地语言,而是一个额外的层。 –

+0

@TrentonBost:错了。 Javascript语言支持正则表达式文字,Javascript规范强制使用'RegExp'类。但是,正则表达式不是原始的。 – SLaks

+0

的确,RegExp类是一个额外的处理层。它不像我在Python或Perl中使用它的本地特性,因此我的评论“不是原生的”。这在JS中是昂贵的。 –

相关问题