我写了一个正则表达式测试一个特定类型的字符串,它工作得很好,但我的一些部分说,我不确定是否有例外,使它无效。
我需要验证字符串类型如下。
“国械2480”、“国械03667”、“国械2999”
我写的正则表达式是"^[A-Z]{0,1}[A-Z0-9]{0,1}[0-9]{0,4}$"
这里是JSBin,如果有人想做实验的话。
https://jsbin.com/yikuqonepu/edit?html,js,console
编辑:为了进一步帮助其他人,我主要是想确定6字符串的第一个字母是字母表,第二个可以是数字/字母表,最后4个是数字,谢谢!
3条答案
按热度按时间2wnc66cl1#
你可以在线测试你的正则表达式。下面的链接是其中一个例子。
你的正则表达式接受字符串'','0','H 0',因为你接受{0}个字符和数字。我将把正则表达式改为:
vu8f3i0k2#
其他的答案都很简单。这里有一个教育性的答案,你可以对所需的字符数和预期的汽车模式使用积极的前瞻。当预期的字符模式很复杂(比你的例子更复杂)时,这种方法很有用。
输出量:
正则表达式说明:
^
-字符串起点处的锚(?=.{6}$)
-6个字符的正前瞻[A-Z][A-Z]?
-预期有1或2辆大写汽车,与[A-Z]{1,2}
相同[0-9]*
--可选数字$
--字符串末端的锚jaql4c8m3#
"^[A-Z]{0,1}[A-Z0-9]{0,1}[0-9]{0,4}$"
也将匹配仅数字的输入或空输入,因为一切都是可选的。如果要强制输入以字母开头,请不要将其设置为可选:
"^[A-Z][A-Z0-9]?[0-9]{0,4}$"
有效输入:
无效的输入:
如果真实的的问题是如何匹配长度为6的输入字符串,第一个字符总是字母,最后4个字符总是数字,第二个字符是字母或数字,那么正则表达式将是:
有效输入:
无效的输入:
或者,它可以用如下公式表示,也许这是您允许的两种不同输入形式中更明确的一种: