2012-11-15 214 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中是昂貴的。 –

相關問題