我需要检查输入的信息是否为3个字符长,第一个应该是0-9
秒A-Z
和第三个0-9
。
我写的模式如下:
var pattern = `'^[A-Z]+[0-9]+[A-Z]$'`;
var valid = str.match(pattern);
我对使用正则表达式进行选择,匹配和替换感到困惑。
[A-Z]
只检查一个字符或整个字符串吗? +
分开(拆分?)字符吗?答案 0 :(得分:1)
+
表示一个或多个字符,因此可能的字符串为ABCD1234EF或A3B,无效为3B或A 6B
答案 1 :(得分:1)
1)+
匹配一个或多个。你想要一个
2)将你的模式声明为REGEX文字,在正斜杠内
考虑到这两点,你的模式应该是
/^[A-Z][0-9][A-Z]$/
另请注意,您可以将[0-9]
替换为\d
快捷方式(匹配任何数字字符),从而使模式稍微缩短。
3)(可选)如果要允许任何一种情况,请在最终尾部斜杠后添加不区分大小写的i
标志。
4)如果你只想测试一个字符串匹配一个模式,而不是从中检索匹配,那么使用test()
,而不是match()
- 它更有效率。
var valid = pattern.test(str); //true or false
答案 2 :(得分:0)
这是你需要的正则表达式:
^[0-9][A-Z][0-9]$
在这种情况下,[A-Z]只检查一个字符或整个字符串吗?
它只是检查1个字符,但字符串中的字符可以多次...
你应该添加^和$以便像我一样匹配整个字符串。
+分开(拆分?)字符吗? 号
+
符号只表示字符可以重复1次以上。
答案 3 :(得分:0)
“+”表示一个或多个。在您的情况下,您应该使用精确数量匹配:
/^\w{1}\d{1}\w{1}$/