JavaScript 正则表达式与预期相反

标签 javascript

我有一个与预期相反的正则表达式...我有一些可以是数字也可以不是数字的东西。我尝试使用 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 methodindexOf 一样工作并返回找到正则表达式的索引,如果没有找到则返回 -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/

相关文章:

javascript - 使用 jQuery $.ajax() 时如何使用 GET 在请求正文中发送数据

javascript - javascript 中的正则表达式 - 不起作用

javascript - 当数据缓存在本地时,回流避免每次都命中服务器

javascript - 在 AngularJS 中使用 iFrame

javascript - for 循环没有按我的预期工作

javascript - 验证用 javaScript 编写的函数只运行一次?

javascript - Ajax 输出上的 onclick 事件

javascript - Openlayers 3 map 上下文菜单

javascript - 如何在 nw.js 中开始使用 angular2

php - html,css,从 gif 文件执行 javascript