正则表达式 1:检查 3 到 6 之间的数字。
var myRegxp = /^([0-9]){3,6}$/;
正则表达式 2:检查 3 到 6 之间的数字。
var myRegxp = /^([0-9_]){3,6}$/;
正则表达式 3:检查 3 到 6 之间的数字以及
dash
.var myRegxp = /^([0-9_-]){3,6}$/;
问题:
- 为什么所有这些对于 3 和 6 之间的数字匹配都非常有效?
_
第二个和第三个表达式中的(下划线)是什么意思?
正则表达式 1:检查 3 到 6 之间的数字。
var myRegxp = /^([0-9]){3,6}$/;
正则表达式 2:检查 3 到 6 之间的数字。
var myRegxp = /^([0-9_]){3,6}$/;
正则表达式 3:检查 3 到 6 之间的数字以及dash
.
var myRegxp = /^([0-9_-]){3,6}$/;
问题:
_
第二个和第三个表达式中的(下划线)是什么意思?这些中的每一个都检查 3 到 6 个字符的序列。
第一个只允许 3 位数字。
第二个允许 3 个字符,但除了数字之外还包括下划线。
第三个允许 3 个字符,但除了数字之外还包括下划线和破折号。
这些是否“有效”取决于您要完成的工作。破折号对于允许负数很有用,尽管更严格的正则表达式会要求破折号位于第一个位置,并且仍然允许 3 到 6 个额外的数字。
在回答您关于下划线的问题时,它只是第三个正则表达式中另一个允许的字符。这是一个完全合法的正则表达式。
如果你剖析第三个正则表达式,你会得到:
^
表示您要匹配的字符串的开头
()
意味着在结果中分别捕获括号之间的内容。它不会影响匹配的内容,但会影响匹配结果的返回方式。
[]
表示一个字符集,它可以匹配这些括号中的任何内容。
[0-9]
表示一个字符范围,其中 0 到 9 之间的任何字符都将构成匹配。
[0-9_-]
表示与上面相同的范围,但还包括下划线字符和连字符。
{3,6}
表示您要匹配前一个正则表达式元素的 3-6 次出现。
$
表示字符串的结尾
因此,在第三个正则表达式中,您要查找字符串的开头,然后是 3-6 个字符,可以是数字、下划线或连字符,然后是字符串的结尾。
例如:
"444" - matches all three
"-44" - matches the second or third
"_-4" - matches the third
"4" - matches none
如果您想要一个允许 3-6 位数字并且可以是正数或负数的正则表达式,那么您将使用如下内容:
/^[+\-]?\d{3,6}$/
这允许一个可选的前导连字符或加号,后跟 3-6 位数字。
[0-9]
意思是“从0
to范围内的任何东西9
”,或者换句话说,一个数字(也可以用 表示\d
)。括号表示分组,但在这里是不必要的。意思是“前面的{3,6}
东西必须出现三到六次”。^
and$
表示正则表达式必须匹配整个字符串。
中的下划线[]
表示它与数字一起也是有效字符。
它们都是有效的正则表达式,但做不同的事情:
您要使用哪一个取决于您认为有效的数据。例如,如果连字符无效,您就不想使用第三个,因为它接受连字符。如果你想禁止下划线,那么你最好使用第一个,因为所有其他的都允许下划线。您甚至可以创建一个正则表达式来允许数字和破折号,但不是很简单的下划线:/^[\d-]{3,6}$/