2011-10-19 42 views
-3

如何检查数字是否有-,+,x或其前面没有任何内容?检查数字是否为 - ,+或x

选项,检查是:

20 
+20 
-20 
x20 

20是任何数字。

+0

这功课吗? 'string.indexOf()' –

+5

你*自己试过什么? – Matt

+0

你说的是字符串还是数字? “-20”在它前面有一个“ - ”,但是-20是一个负数,并且不能说真正的东西在它前面。在这种情况下是“x”还是你的意思是表示任意值? –

回答

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/

+0

添加功能,我的答案将返回前缀和数字。 – jfriend00

0

我希望这不是功课!这里是这样的,对于一些返回-1,0或1,取决于数是否为负的函数,零或正,以信誉A1ien51

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

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

例如:

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

实施例。注意:它被修订,以接受多个前缀和浮点数

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 
+0

感谢@ vol7ton。我会添加什么来让它返回数字以及数值和符号? – Cybercampbell

+0

也..我需要'hasSign('20'); // {value:true,sign:“”} '返回true ..可以轻松完成吗?我不知道RegExp ..今晚要去读一下它。 – Cybercampbell

+0

@cybercampbell:现在检查 – vol7ron

0

像@迈克尔说,

现在我给你的样品(如-x20)。

<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>