gpt4 book ai didi

javascript - 这三个正则表达式有效吗?

转载 作者:行者123 更新时间:2023-11-28 11:25:03 25 4
gpt4 key购买 nike

  • 正则表达式1:检查3到6之间的数字。

    var myRegxp = /^([0-9]){3,6}$/;
  • 正则表达式 2:检查 3 到 6 之间的数字。

    var myRegxp = /^([0-9_]){3,6}$/;
  • 正则表达式3:检查 3 到 6 之间的数字以及破折号

    var myRegxp = /^([0-9_-]){3,6}$/;

问题:

  1. 为什么所有这些对于 3 到 6 之间的数字匹配都完美?
  2. 第二个和第三个表达式中的_(下划线)的含义是什么?

最佳答案

其中每一个都会检查 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 位数字。

关于javascript - 这三个正则表达式有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com