2010-12-15 28 views
2

我有一个输入字段,无论我想输入百分比值还是单位金额,都必须检查它是否以%符号结尾。用于检查号码的JavaScript正则表达式是否带有%符号

样品输入可以是

12% 
12.888% 
12.00% 
12.00001% 
12.123344% 

或平坦量

100 
100.55252 
100.254575 

这样的事情。

N.B:我想学习JavaScript的正则表达式...有什么建议吗?

+2

这有什么** **做jQuery的。 JavaScript中的正则表达式只是JavaScript。** – 2010-12-15 03:48:18

+0

让我们在这里诚实。检查字符串的最后一个字符是否为百分号也不一定与正则表达式有很大关系。 – 2010-12-15 03:54:39

+0

但想用正则表达式:) – 2010-12-15 03:56:48

回答

3

jQuery的使用JavaScript的正则表达式。这是一个很好的起点https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

为您的需要,/[0-9]*\.?[0-9]+%/将是有用的。

+0

它不工作:( – 2010-12-15 03:57:51

+0

)编辑:如果你想要点(小数点)是可选的,在它后面加一个'?'。 – dheerosaur 2010-12-15 04:01:37

+1

为什么你使用'*'第一个字符集,但在第二个'+'?不会匹配'.99%'? – Pit 2010-12-15 11:40:58

2
/%$/.test("35%"); >> true 
/%$/.test("100"); >> false 
/%$/.test("35.555%"); >> true 
/%$/.test("35.555"); >> false 

看看Mozilla开发者网络的更多的一些信息: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

+0

什么会发生十进制验证? – 2010-12-15 03:53:46

+0

添加小数测试。 $匹配到一行的结尾,所以如果您在$之前放置任何值,它将确保该行以这些值结束。它不关心线上的其他任何值。 (请记住,这将适用于数字和字母,所以如果你想添加它,你可以让正则表达式只查找数字和小数) – sioked 2010-12-15 04:00:05

+2

/%$ /。test(“asdfasdfsdf%”); >> true它也可以工作:( – 2010-12-15 04:02:19

1

由于Anon 已经建议,您并不需要使用正则表达式来解决此问题。出了什么问题:

var number = "12.888%"; 
if(number[number.length - 1] === '%') { 
    //processing... 
} 
2

以上所有建议都非常好。根据您的需求,您可以选择其中任何一种。我为下面的内容添加了更多内容,以便为您打分。修改以适应您的需求。

function getValue(num) { 
    var matches=num.match(/(^\s*\d+\.?\d*)(%)?\s*$/); 
    var m = false, p = false, v = 0; 
    if (matches) { 
     m = true; 
     p = (matches[2]=="%"); 
     v = matches[1]; 
    } 
    return {isMatch: m, isPercent: p, value: v}; 
} 

var vals = "12%,12.888%,12.00%,12.00001%,12.123344%,100,100.,100.55252,100.254575,notnum".split(','); 
for(var i=0;i<vals.length;i++) { 
    var gv = getValue(vals[i]); 
    console.log("string="+vals[i]," isMatch="+gv.isMatch," isPercent="+gv.isPercent," value="+gv.value); 
} 

输出是:

string=12% isMatch=true isPercent=true value=12 
string=12.888% isMatch=true isPercent=true value=12.888 
string=12.00% isMatch=true isPercent=true value=12.00 
string=12.00001% isMatch=true isPercent=true value=12.00001 
string=12.123344% isMatch=true isPercent=true value=12.123344 
string=100 isMatch=true isPercent=false value=100 
string=100. isMatch=true isPercent=false value=100. 
string=100.55252 isMatch=true isPercent=false value=100.55252 
string=100.254575 isMatch=true isPercent=false value=100.254575 
string=notnum isMatch=false isPercent=false value=0