如果可能的话,我需要一条匹配以下内容的正则态度,以及如何使用JavaScript或Node js软件包进行测试



任何数字或大写字母(其中的5个),然后是字符'?'??'

例如,如果我有:
AA54ZG-应匹配
AA54ZG? - 应该匹配
AA54Z? - 应该匹配
AA54ZG-不应该匹配
?A54ZG-不应该匹配
AA54Z-不应该匹配

等等...(如果您觉得有必要,我可以提供更多示例)

您去这里。只需将" mytest"变量设置为您想验证的任何内容,或者如果不信任正则态度:

const MY_REGEX = /^([A-Z0-9]{5}?)|([A-Z0-9]{6}??)$/
function test( str ) {
  if( MY_REGEX.test( str ) )
    document.write( str +": MATCHES<br>" );
  else
    document.write( str +": DOESN'T MATCH<br>" );
}
test( "AA54ZG" ); // MATCHES
test( "AA54ZG?" ); // MATCHES
test( "AA54Z?" ); // MATCHES
test( "aA54ZG" ); // DOESN'T MATCH
test( "?A54ZG" ); // DOESN'T MATCH
test( "AA54Z" ); // DOESN'T MATCH

说明:

[A-Z0-9] {5}:5(或6)上案字母或数字。

??: 选修的 "?"(必须使用?,因为?保留为"可选")

?:必需的"?"

这是我想到的,它适用于您给出的示例:

(?:^[A-Z0-9]{6}??$)|(?:^[A-Z0-9]{5}?$)

在这里查看:https://regex101.com/r/hp0jh9/2

另一种做同样的方式(但会以更少的步骤匹配)。

[dA-Z]{5}(?:?|[dA-Z]??)
  • [dA-Z]{5}:5x大写或数字
  • (?:?|[dA-Z]??):随后是问号,或其他上/数字和可选的问号。?:只是使其成为一个非捕捉组。

根据您的用例,将^$分别添加到开始和结束以验证整个字符串。

https://regex101.com/r/jpv3w7/1

最新更新