我正在尝试理解以下正则表达式,我了解初始部分,但我无法弄清楚{3,19}在这里是做什么的:
/[A-Z][A-Za-z0-9\s]{3,19}$/
我正在尝试理解以下正则表达式,我了解初始部分,但我无法弄清楚{3,19}在这里是做什么的:
/[A-Z][A-Za-z0-9\s]{3,19}$/
那就是被称为量词的自定义重复操作。
\d{3}
将精确匹配三个数字。
[a-c]{1,3}
将匹配至少一次,但最多三次出现的任何 a、b 或 c。
\w{0,1}
表示可选择性地匹配单词字符。这与放置问号相同,例如:\w?
(\d\w){1,}
将匹配至少一次,但最多无限次出现的数字后跟一个单词字符的任意组合。因此它将匹配 1k1k2k4k1k5j2j9k4h1k5k
。这与加号符号相同,例如:(\d\w)+
b{0,}\d
将可选择性地匹配字母 b 后跟一个数字,但也可以匹配无限个字母 b 后跟一个数字。因此它将匹配 5
、b5
,甚至 bbbbbbb5
。这与星号相同,例如:b*\d
它们是'量词' - 这意味着“匹配前面的模式3到19次”
当你学习正则表达式时,在一个可以突出显示匹配项的交互式工具中玩耍非常有用。我一直喜欢一个叫做Regex Coach的工具,但它只适用于Windows。不过有很多在线工具 - 例如在这里玩耍你的正则表达式here。
{n,m}
类似于?
、*
或+
(它是一个量词符号),但不同的是,它匹配的次数至少为n
次,最多为m
次。请查看Paul提供的文档。同时也可以参考http://www.regular-expressions.info/repeat.html。 - Felix Kling{n,m}
表示“重复前面的元素至少 n
次,最多 m
次”,因此表达式
[A-Za-z0-9\s]{3,19}
表示“匹配 3 到 19 个字符,这些字符是字母、数字或空格”。请注意,默认情况下重复是贪婪的,因此它将尝试在该范围内尽可能匹配多的字符(由于行尾锚点使得每次匹配只有一个可能性,所以这里不会影响结果)。
/[A-Z][A-Za-z0-9\s]{3,19}$/
的意思如下:
[A-Z]
:我们正在寻找一个大写字母[A-Za-z0-9\s]{3,19}
:一系列长度在3到19个字符之间的字母、数字或空格$
:行尾/[A-Z][A-Za-z0-9\s]{3,19}$/
通过在线正则表达式网站,我们可以了解如下:
A-Za-z0-9
与\w
相同,只是\w
还包括下划线,人们通常也希望允许下划线,或者不介意包含下划线,因为这样更容易阅读。所以,作为注释,这个更好:/[A-Z][\w\s]{3,19}$/
。这是一个以大写字母开头的单词或句子(包括数字),后面必须跟随三到十九个字符,可以是任何组合的单词字符或空格。 - Suamere