我有一个与预期相反的正则表达式...我有一些可以是数字也可以不是数字的东西。我尝试使用 isNaN 但它给出了奇怪的结果,所以我想我会尝试使用正则表达式。这给出了更奇怪的结果。 html看起来像
<span class="label">31</span>
我通过 var text = document.querySelectorAll('.label, .content');
获取它
然后我通过以下方式处理它:
for (var i=0; i<text.length; i++) {
if (text[i].innerText.search(/^[0-9]+$/)) {
// do number stuff
}
}
但它会匹配所有非数字的内容,并且不会处理数字。如果我将正则表达式更改为 /^[^0-9]+$/
(否定字符)它确实匹配数字。这与我的预期相反!有人知道会发生什么吗?
谢谢。
最佳答案
search
method像 indexOf
一样工作并返回找到正则表达式的索引,如果没有找到则返回 -1
。由于您的正则表达式仅在位置 0 处匹配,因此它仅返回那个或 -1
- 虽然 -1
是一个真值,但 0
是不是。这就是行为“反转”的原因。
你可以做
if (text[i].innerText.search(/^[0-9]+$/) == 0)
但是你最好使用test
method返回您想要的 bool 值的正则表达式对象:
if (/^[0-9]+$/.test(text[i].innerText))
关于JavaScript 正则表达式与预期相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772038/