正则表达式确切数字且仅为正数

时间:2012-05-31 16:04:26

标签: javascript regex

我有一个小问题是获得一个正常的表达式,它满足了匹配列表中的确切数字基数并且数字是正数的事实,在开始时我正在使用以下内容:

<!DOCTYPE html>
<html>
<body>

<script type="text/javascript">
    var patt1=/\b(100|101)/g;

    var str="-101";
    document.write(str.match(patt1));
    document.write("<br/>");
    var str="101";
    document.write(str.match(patt1));

</script>

</body>
</html>

但我意识到在这种情况下它将返回101和-101作为有效。然后我试了

var var patt1=/[^-]\b(100|101)/g;

但两种情况的结果都是null,然后是

var patt1=/(^-)\b(100|101)/g; 

但结果不是null,而是101,而-101 null则相反。 我想要101而不是-101任何关于如何做到这一点的想法。

2 个答案:

答案 0 :(得分:3)

可以使用此regex

var patt1 = /^(100|101)$/;

它仅排除100101作为有效输入。

但是对于这个简单的测试,我会使用:

if (str === "100" || str === "101")
    // Do something.

答案 1 :(得分:0)

这将匹配一个字符串中的数字,该字符串中没有任何内容,或者前面带有-以外的字符:

var patt1 = /(^|[^-\d])(100|101)\b/;
var str1 = "Does this string contain 100 somewhere?"
var str2 = "Does this string contain -100 somewhere?"

console.log(str1.match(patt1)); // Finds a match
console.log(str2.match(patt1)); // Doesn't