Javascript 为什么/0(\.\d+;)?|1/.test(';0.';)返回true?

Javascript 为什么/0(\.\d+;)?|1/.test(';0.';)返回true?,javascript,regex,Javascript,Regex,甚至/0(\.\d+)| 1/.test(“…0.0.0”)returntrue。。。我只想得到一个RegExp来测试0和1之间的数字。您需要使用^和$锚定RegExp,否则如果可以在字符串中的任何位置找到模式,它就会匹配 console.log(/^(0(\.\d+)?| 1)$/.test(“…0.0.0”); console.log(/^(0(\.\d+)?| 1)$/.test('0.1'); console.log(/^(0(\.\d+)?| 1)$/.test('2.3')您需要使

甚至
/0(\.\d+)| 1/.test(“…0.0.0”)
return
true
。。。我只想得到一个RegExp来测试0和1之间的数字。

您需要使用
^
$
锚定RegExp,否则如果可以在字符串中的任何位置找到模式,它就会匹配

console.log(/^(0(\.\d+)?| 1)$/.test(“…0.0.0”);
console.log(/^(0(\.\d+)?| 1)$/.test('0.1');

console.log(/^(0(\.\d+)?| 1)$/.test('2.3')
您需要使用
^
$
锚定regexp,否则如果可以在字符串中的任何位置找到模式,则它将匹配

console.log(/^(0(\.\d+)?| 1)$/.test(“…0.0.0”);
console.log(/^(0(\.\d+)?| 1)$/.test('0.1');
console.log(/^(0(\.\d+)?| 1)$/.test('2.3')返回true的原因是,它在给定文本中查找匹配项。
上面的正则表达式将在给定文本的任何位置找到任何
1
0
0.d+
。所以对于
…0.0.0
,它匹配它找到的第一个
0.d+
。在这种情况下,它是
0.0

同样,对于标题中的案例
0.
。正则表达式匹配它找到的第一个
0
,忽略

您需要查看添加的是锚定标记。因此,您可以尝试以下方法:
^
-表示字符串的开头

$
-表示字符串的结尾

这可以确保像
0.
…0.0.0
这样的边缘情况得到正确处理
[
'...0.0.0',
'0',
'0.',
'0.12546',
'0.0.0',
'1',
'2'
].forEach(exampleString=>console.log(exampleString,/^((0(\.\d+))| 1)$/.test(exampleString))
嗯,它返回true的原因是因为它在给定文本中找到了匹配项。 上面的正则表达式将在给定文本的任何位置找到任何
1
0
0.d+
。所以对于
…0.0.0
,它匹配它找到的第一个
0.d+
。在这种情况下,它是
0.0

同样,对于标题中的案例
0.
。正则表达式匹配它找到的第一个
0
,忽略

您需要查看添加的是锚定标记。因此,您可以尝试以下方法:
^
-表示字符串的开头

$
-表示字符串的结尾

这可以确保像
0.
…0.0.0
这样的边缘情况得到正确处理
[
'...0.0.0',
'0',
'0.',
'0.12546',
'0.0.0',
'1',
'2'

].forEach(exampleString=>console.log(exampleString,/^((0(\.\d+))| 1)$/.test(exampleString))
请提供阳性和阴性案例的示例数据。请注意,
0.0.0
不是有效数字。请提供阳性和阴性情况的样本数据。请注意,
0.0.0
不是一个有效的数字。regexp会找到
1
0
0.d+
(不仅仅是
1
0.d
),这就是为什么它也会匹配标题中的
0.
。我很确定它不会匹配
0.
,但它肯定也会匹配
0
。抱歉,我指的是原始regexp,不是您的解决方案(最初您在解释原始regexp的发现时只有
1
0.d
),啊,您完全正确。我明白我的误解是什么了,我以为你的意思是regex将匹配
0.
作为一个整体-而不是
0中的
0
regexp将找到
1
0
0.d+
(不仅仅是
1
0.d
),这就是为什么它也与标题中的
0.
匹配。我很确定它不会与
0.
匹配,但它肯定也会与
0
匹配。对不起,我指的是原始regexp,而不是您的解决方案(最初您在解释原始regexp的发现时只有
1
0.d
)啊,你完全正确。我明白我的误解是什么了,我以为你的意思是正则表达式将匹配
0.
作为一个整体-而不是
0中的
0
/0(\.\d+)?|1/
/^((0(\.\d+)?)|1)$/