JavaScript正则表达式的作用与';这是意料之中的

JavaScript正则表达式的作用与';这是意料之中的,javascript,Javascript,我有一个正则表达式,它的作用与预期相反。。。我有一些东西可以是数字也可以不是。我尝试使用isNaN,但结果很奇怪,所以我想试试正则表达式。这会产生更奇怪的结果。html看起来像 31 我通过var text=document.querySelectorAll('.label.content')获取它 然后我通过以下方式进行处理: for (var i=0; i<text.length; i++) { if (text[i].innerText.search(/^[0-9]+$/)) {

我有一个正则表达式,它的作用与预期相反。。。我有一些东西可以是数字也可以不是。我尝试使用isNaN,但结果很奇怪,所以我想试试正则表达式。这会产生更奇怪的结果。html看起来像
31
我通过
var text=document.querySelectorAll('.label.content')获取它

然后我通过以下方式进行处理:

for (var i=0; i<text.length; i++) {
 if (text[i].innerText.search(/^[0-9]+$/)) {
  // do number stuff
 }
}

for(var i=0;i不使用搜索,使用匹配

var text=document.querySelectorAll('.label');
if(文本[0].innerText.match(/^[0-9]+$/){
日志(“有编号”)
}否则{
控制台日志(“无编号”)
}

31
不要使用搜索,使用匹配

var text=document.querySelectorAll('.label');
if(文本[0].innerText.match(/^[0-9]+$/){
日志(“有编号”)
}否则{
控制台日志(“无编号”)
}
31
indexOf
类似,并返回已找到正则表达式的索引,如果未找到则返回
-1
。由于正则表达式仅在位置0处匹配,因此它只返回该索引或
-1
,而
-1
是一个真实值,
0
则不返回。这就是行为“反转”的原因

你可以

if (text[i].innerText.search(/^[0-9]+$/) == 0) 
但您最好使用regex对象的,它返回您想要的布尔值:

if (/^[0-9]+$/.test(text[i].innerText)) 
类似于
indexOf
并返回已找到正则表达式的索引,如果未找到则返回
-1
。由于正则表达式仅在位置0处匹配,因此它只返回该位置或
-1
,而
-1
是真实值,
0
则不返回。这就是行为“反转”的原因

你可以

if (text[i].innerText.search(/^[0-9]+$/) == 0) 
但您最好使用regex对象的,它返回您想要的布尔值:

if (/^[0-9]+$/.test(text[i].innerText)) 

如果您要做的只是检查是否存在匹配项,请使用
test

if(/^[0-9]+$/.test(text[0].innerText)) {
    ...
} 

如果您要做的只是检查是否存在匹配项,请使用
test

if(/^[0-9]+$/.test(text[0].innerText)) {
    ...
} 
删除该“^”并重试。因为“^”请求选择与正则表达式不匹配的项。 因此应该是/[0-9]+$/而不是/^[0-9]+$/。

删除该“^”并重试。因为“^”请求选择与正则表达式不匹配的项。
所以它应该是/[0-9]+$/not/^[0-9]+$/。

search
返回一个索引或
-1
(如果找不到)。可能需要
test
返回索引或
-1
如果找不到。可能需要
test
。当在[]外部使用时,胡萝卜符号表示“开始”;只有在[]内部才是“否定”字符。当在[]外部使用时,胡萝卜符号表示“开始”;只有在[]内部才是“否定”字符。