我有一个小问题是获得一个正常的表达式,它满足了匹配列表中的确切数字基数并且数字是正数的事实,在开始时我正在使用以下内容:
<!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任何关于如何做到这一点的想法。
答案 0 :(得分:3)
您可以使用此regex
var patt1 = /^(100|101)$/;
它仅排除100
或101
作为有效输入。
但是对于这个简单的测试,我会使用:
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