我正在尝试编写一个正则表达式来验证九个数字,并且只有一个大写字母,例如:
123456789A
我使用的正则表达式对我不起作用:
/^[0-9]{9}.[A-Z]{1}$/
你能帮我弄清楚一个有效的表达吗?
答案 0 :(得分:2)
这是因为你的两件事之间有一个点。另外,你需要匹配字符串的开头和结尾吗?如果没有,您可以删除它(^和$)。
提示是您使用http://www.regexr.com/,这样您就可以准确了解每个令牌的作用。
所以,无论如何,只需删除点,所以它看起来像这样:
/^[0-9]{9}[A-Z]{1}$/
然而,这不是最佳解决方案。首先,您可以使用"数字标记",即\ d并添加{9}。然后你也可以删除已经假设的{1}。 最后:
/^\d{9}[A-Z]$/
答案 1 :(得分:2)
试试这个
^[0-9]{9}[A-Z]$
.
是不必要的,它不是连接,但它代表"任何不包括换行符的字母"。
{1}
,为了简单起见,只需[A-Z]
即可。
此处,您也可以使用\d
代替[0-9]
,但我更喜欢[0-9]
,因为它更明确。
请参阅:DEMO
答案 2 :(得分:1)
\d{9}[A-Z]
匹配9位数字和1个大写字母
答案 3 :(得分:1)
您接近解决方案!您根本不需要点.
运算符:
/^\d{9}[A-Z]$/
上面的表达式将匹配包含九个数字和最后一个大写字母的任何字符串。如果要使其不区分大小写并匹配任何字母,可以添加修饰符i
(不区分大小写)。我还使用了匹配任何数字的\d
运算符,而不是[0-9]
,它更短,更容易阅读。
以上是RegExp的 working example 。