检查数字是否为 - ,+或x

时间:2011-10-19 18:42:55

标签: javascript

如何查看某个号码是否有-+x或前面没有任何内容?

要检查的选项是:

20
+20
-20
x20

20是任何数字。

5 个答案:

答案 0 :(得分:2)

您可以使用内置的string.charAt()函数查看字符串的第一个字符。

例如:

var myString = "...";
if(myString.charAt(0) == '+') //do something
else if(myString.charAt(0) == 'x') //do something else
...

答案 1 :(得分:1)

如果你想要更灵活一点并允许空格,那么你正在寻找一个数字之前的第一个非空白字符,你可以使用正则表达式:

var str = " + 20";

var match = str.match(/^\s*([^\d])/);
if (match) {
    switch(match[1]) {
        case "+":
            // put code here to handle this operator
            break;
        case "-":
            // put code here to handle this operator
            break;
        case "x":
            // put code here to handle this operator
            break;
        default:
            // put code here to handle unknown operator
            break;
    }
}

这里的工作示例:http://jsfiddle.net/jfriend00/fJcQJ/

或者,如果你想要一个可以返回前缀和数字的函数,你可以这样做:

function parseNum(str) {
    var match = str.match(/^\s*([\+\-x]?)\s*(\d+)/);
    if (match) {
        return({
            num: parseInt(match[2], 10),
            prefix: match[1] ? match[1] : ""
        });
    }
    // nothing found of the right format
    return(null);
}

并且,一个包含测试用例的工作示例:http://jsfiddle.net/jfriend00/DCxcb/

答案 2 :(得分:1)

使用正则表达式捕获第一部分并返回对象的示例。注意:它已被修改为接受多个前缀(例如 -x20 )和浮点数

function hasSign(str){
   return { value  : /^([-+x])*(\d+\.*\d*)$/.test(str.toString())
          , sign   : RegExp.$1
          , number : RegExp.$2
          };
}

   hasSign(-20);    // { value:true  , sign:"-"      , number="20"   }
   hasSign(+20);    // { value:true  , sign:""       , number="20"   }
   hasSign('20');   // { value:true  , sign:""       , number="20"   }
   hasSign('20.3'); // { value:true  , sign:""       , number="20.3" }  <-- float
   hasSign('-20');  // { value:true  , sign:"-"      , number="20"   }
   hasSign('+20');  // { value:true  , sign:"+"      , number="20"   }
   hasSign('x20');  // { value:true  , sign:"x"      , number="20"   }
   hasSign('a20');  // { value:false , sign:"Object" , number=""     }  <-- false
   hasSign('x');    // { value:false , sign:"Object" , number=""     }  <-- false

答案 3 :(得分:0)

我希望这不是功课!这是一个函数,对于一个数字返回-1,0或1,取决于该数字是负数,零还是正数,并归功于A1ien51

function sgn(x)
{
  if(x>0)return 1;
  else if(x<0)return -1;
  else return 0;
}

答案 4 :(得分:0)

就像@Michael告诉的那样,

现在我给你样品。

<SCRIPT language="JavaScript">
<!--
var number="+a"; // your number will use for testing 
where_is_add=number.indexOf('+');
where_is_sub=number.indexOf('-');
where_is_mul=number.indexOf('*');
if(where_is_add==0){
    alert('There is +  in front of it.');
}
else if(where_is_sub==0){
    alert('There is -  in front of it.');
}
else if(where_is_mul==0){
    alert('There is *  in front of it.');
}
else {
    alert('Nothing  in front of it.');
}
</SCRIPT>