0

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

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

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

4

2 回答 2

4

可以用这个regex

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

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

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

if (str === "100" || str === "101")
    // Do something.
于 2012-05-31T16:06:08.003 回答
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
于 2012-05-31T16:08:37.293 回答