我试图理解以下正则表达式,我理解了初始部分但却无法弄清楚{3,19}在这里做了什么
/[A-Z][A-Za-z0-9\s]{3,19}$/
答案 0 :(得分:18)
这就是称为量词的自定义重复操作。
\d{3}
会找到正好三位数。
[a-c]{1,3}
会发现a,b或c至少出现一次,但最多会出现三次。
\w{0,1}
表示可以选择找到单词字符。这与放置问号相同,例如:\w?
(\d\w){1,}
会找到数字后跟单词字符的任意组合至少一次,但最多可无限次。所以它匹配1k1k2k4k1k5j2j9k4h1k5k
这与Plus符号相同,例如:(\d\w)+
b{0,}\d
可选择找到后跟数字的字母b
,但也可以匹配无数字母b
后跟数字。因此它会匹配5
,b5
甚至bbbbbbb5
。这与Asterisk相同。例如:b*\d
答案 1 :(得分:7)
它们是'quantifiers' - 它意味着'匹配先前的模式3到19次'
当你学习正则表达式时,真的很有必要在一个可以突出显示匹配的交互式工具中使用它们。我一直很喜欢名为Regex Coach的工具,但它只是Windows。但是有很多在线工具 - 可以使用你的正则表达式here, for example。
答案 2 :(得分:5)
{n,m}
表示“至少n
次”重复上一个元素,最多m
次“,所以表达式为
[A-Za-z0-9\s]{3,19}
表示“匹配字母,数字或空格的3到19个字符”。请注意,默认情况下重复是贪婪的,所以这将尝试在该范围内匹配尽可能多的字符(这不会在这里发挥作用,因为行结束锚定使得它们实际上只有一种可能性匹配)。
答案 3 :(得分:3)
你在那里的正则表达式/[A-Z][A-Za-z0-9\s]{3,19}$/
分解为:
[A-Z]
我们正在寻找大写字母
其次是
[A-Za-z0-9\s]{3,19}
一系列字母,数字或空格,介于3到19个字符之间
$
然后是行尾。
答案 4 :(得分:1)
答案 5 :(得分:0)