Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式检查[0-6]之间的简单数字_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式检查[0-6]之间的简单数字

Javascript 正则表达式检查[0-6]之间的简单数字,javascript,regex,Javascript,Regex,有人能解释一下吗 在我看来,写为[0-6]的正则表达式只会检查0到6之间的数字,但在上述情况下,当存在任何此类数字时,731231的值也会被评估为真。如果只想匹配这些数字,请使用 var number = '731231'; var myRegex = /[0-6]/; console.log(myRegex.test(number)); 这将匹配具有0-6之间任意位数的字符串。如果需要单个数字,请省略+: /^[0-6]+$/ 当存在这样的数字时,您的正则表达式匹配。如果只想匹配这些

有人能解释一下吗


在我看来,写为[0-6]的正则表达式只会检查0到6之间的数字,但在上述情况下,当存在任何此类数字时,731231的值也会被评估为真。如果只想匹配这些数字,请使用

var number = '731231';

var myRegex = /[0-6]/; 

console.log(myRegex.test(number));
这将匹配具有0-6之间任意位数的字符串。如果需要单个数字,请省略
+

/^[0-6]+$/

当存在这样的数字时,您的正则表达式匹配。如果只想匹配这些数字,请使用

var number = '731231';

var myRegex = /[0-6]/; 

console.log(myRegex.test(number));
这将匹配具有0-6之间任意位数的字符串。如果需要单个数字,请省略
+

/^[0-6]+$/
姚应使用

/^[0-6]$/
您正在查找一个字符串,该字符串以^开头,然后包含一个0..6位数字,并立即以$结尾

您的实现
/[0-6]/
正在字符串中的任何位置寻找0..6位,这就是731231符合此标准的原因。

Yiu应该使用

/^[0-6]$/
您正在查找一个字符串,该字符串以^开头,然后包含一个0..6位数字,并立即以$结尾


您的实现
/[0-6]/
正在字符串中的任何位置查找0..6位,这就是731231符合此标准的原因。

您正在检查是否存在介于0和6之间的数字,情况就是这样

  var myRegex = /^[0-6]$/;
更新


但是,如果希望字符串与满足规则
0>=N的数字匹配,则需要检查是否存在介于0和6之间的数字,情况就是这样

  var myRegex = /^[0-6]$/;
更新


但是,如果希望字符串与满足规则
0>=N的数字匹配,则正则表达式将检查字符串中是否出现以下内容之一:

0、1、2、3、4、5或6

这是真的,因为里面有1,2和3

如果要检查整个字符串是否为数字,则可以使用:

var myRegex = /^[0-6]$/;

您的正则表达式正在检查字符串中是否出现以下内容之一:

0、1、2、3、4、5或6

这是真的,因为里面有1,2和3

如果要检查整个字符串是否为数字,则可以使用:

var myRegex = /^[0-6]$/;

它测试字符串中的一个字符是否与[0-6]
3
匹配。console.log(number.match(myRegex))
返回
3
作为它匹配的第一个数字。顺便说一句,这不是正则表达式的一个好用途。@Emissary你为什么这么说?正则表达式的速度明显较慢(原因已经被记录在案),你可能会说差异可以忽略,但它只是懒惰。正则表达式用于逐个字符解析字符串,您处理的是一个数字(单个实体)-有特定的比较运算符和
Math
逻辑,它们在处理数字时更加灵活和健壮。它测试字符串中的一个字符是否与[0-6]
3
匹配。
console.log(number.match(myRegex));
3
作为它匹配的第一个数字返回。顺便说一句,这不是regex的好用途。@Emissary你为什么这么说?regex的速度明显较慢(原因已经全部记录在案),您可能会认为差异可以忽略不计,但这只是懒惰。Regex用于逐个字符解析字符串,您处理的是一个数字(单个实体)-有一些特定的比较运算符和数学逻辑,它们在处理数字时更加灵活和健壮。@aelor:请阅读所有内容。如果您不想让
11
匹配(因为它大于6),请删除
+
。我很确定他想要
/^[0-6]+$/.test(“42”)
返回
false
。使用
+'731231'<6&&+'731231'>0;
@aelor:阅读所有内容。如果您不想让
11
匹配(因为它大于6),请删除
+
。我很确定他想要
/[0-6]+$/。测试(“42”)
返回
false
。使用
+'731231'<6&&+'731231'>0;