检查变量是否包含javascript中的字母表

时间:2014-05-05 15:01:01

标签: javascript regex

我是Javascript的新手,我想知道是否有办法检查java脚本中的varibale是否包含除数字之外的任何内容。 我有map变量,其中我有JSON值,如下所示。 ' ID'是地图的关键。

var map = {};
data = {"id":"01L","rowId":"01L","start":1399919400000,-- - -- -- ------}
map[data.id] = data;

'地图[ID]。开始'可以有两种值,如图所示。在案例1中,将只有数字,在案例2中,将有nums和alphabets。我需要检查这两个。

  1. 1399660200000
  2. 2014年5月10日星期六00:00:00 GMT + 0530。
  3. 所以我需要检查是否' map [id] .start'包含任何字母。 我尝试了以下三种方式......但没有运气。

    方法1

    if((map[id].start).match(/[^0-9]/))  {
                     console.log("only numbers");
                 } else {
                     console.log("alphabets also");
    }
    TypeError: match is not a function
    

    方法2

    if(isNaN(map[id].start)) {
                     console.log("only numbers"); 
    }else {
           console.log("not only numbers");
     }
    

    方法3

       if((map[id].start).indexOf(":")) > 0) {
                 console.log("not only numbers");
        } else {
                 console.log("only numbers"); 
        }
    
    TypeError: s.indexOf is not a function
    

    请帮帮我。

4 个答案:

答案 0 :(得分:1)

stringX = "Some string"
regExp=/^[\d]*$/; 
if(!regExp.test(stringX)) {
    //Do something
}

1399660200000将触发false作为其唯一的数字

2014年5月10日星期六00:00:00 GMT + 0530。会触发true,因为它包含非数字字符

答案 1 :(得分:0)

Method2最接近正确,你需要做的就是重新排序条件,或者否定它。

if(isNaN(map[id].start)) {
    console.log("not only numbers"); 
} else {
    console.log("only numbers");
}

Method1失败,因为"foo".match()总是返回一个数组,并且数组始终是truethy。

方法3失败,因为数字没有indexOf方法。

答案 2 :(得分:0)

您可以像这样编辑方法3:

if(String(map[id].start).indexOf(":")) > 0) {
         console.log("not only numbers");
} else {
         console.log("only numbers"); 
}

String()会更改字符串中的数字,因此您可以使用.indexOf()

答案 3 :(得分:0)

检查javascript字符串是否仅包含数字:

var myStringWithOnlyNumbers = '1234567890';
var myStringWithOtherStuff = '1234567890.';

/^[0-9]+$/.test(myStringWithOnlyNumbers);
/^[0-9]+$/.test(myStringWithOtherStuff);

Working example