0

我需要检查输入的信息是否是 3 个字符长,第一个应该是0-9第二个A-Z,然后是第三个0-9

我写的模式如下:

var pattern = `'^[A-Z]+[0-9]+[A-Z]$'`;
var valid = str.match(pattern);

我对使用正则表达式进行选择、匹配和替换感到困惑。

  • 在这种情况下,是[A-Z]只检查一个字符还是整个字符串?
  • 是否+分开(拆分?)出字符?
4

4 回答 4

1

+表示一个或多个字符,因此可能的字符串为 ABCD1234EF 或 A3B,无效为 3B 或 A 6B

于 2012-08-07T11:09:20.447 回答
1

1)+匹配一个或多个。你想要一个

2)将您的模式声明为正则表达式文字,在正斜杠内

考虑到这两点,你的模式应该是

/^[A-Z][0-9][A-Z]$/

[0-9]另请注意,您可以通过替换为\d快捷方式(匹配任何数字字符)来使模式略短。

i3) (可选)如果您想允许任何一种情况,请在最后的斜杠后添加不区分大小写的标志。

4)如果您只想测试字符串与模式匹配,而不是从中检索匹配,请使用test(),而不是match()- 它更有效。

var valid = pattern.test(str); //true or false
于 2012-08-07T11:11:24.107 回答
0

这是您需要的正则表达式:

^[0-9][A-Z][0-9]$

在这种情况下,[AZ] 是只检查一个字符还是整个字符串?

它只是检查 1 个字符,但一个字符可以在一个字符串中多次出现..

您应该像我一样添加 ^ 和 $ 以匹配整个字符串。

+ 是否分开(拆分?)出字符?不。

+符号只是表明一个字符可以重复 1 次以上。

于 2012-08-07T11:07:37.983 回答
0

“+”表示一个或多个。在您的情况下,您应该使用精确的数量匹配:

/^\w{1}\d{1}\w{1}$/
于 2012-08-07T11:09:12.243 回答