Javascript 正则表达式匹配卡代码输入

Javascript 正则表达式匹配卡代码输入,javascript,regex,Javascript,Regex,如何编写正则表达式来匹配遵循这些规则的字符串 1个字母后接4个字母或数字,然后 5个字母或数字 3个字母或数字,后跟数字和下列符号之一:!&@ 我需要允许输入为15个字符的字符串或3组5个字符,由一个空格分隔 我正在用JavaScript实现它。应该是这样的: /^[a-z][a-z0-9]{4} ?[a-z0-9]{5} ?[a-z0-9]{3}[0-9][!&@?]$/i 如果您认为合适,可以使用\d随意更改0-9和[0-9]。 正则表达式非常简单,可读性很强^和$确保这是一个

如何编写正则表达式来匹配遵循这些规则的字符串

  • 1个字母后接4个字母或数字,然后
  • 5个字母或数字
  • 3个字母或数字,后跟数字和下列符号之一:!&@
我需要允许输入为15个字符的字符串或3组5个字符,由一个空格分隔

我正在用JavaScript实现它。

应该是这样的:

/^[a-z][a-z0-9]{4} ?[a-z0-9]{5} ?[a-z0-9]{3}[0-9][!&@?]$/i
如果您认为合适,可以使用
\d
随意更改0-9和[0-9]。
正则表达式非常简单,可读性很强
^
$
确保这是一个完整的匹配,因此代码前后没有额外的字符,
/i
标志允许大写或小写字母。

我将以字母开头


注意量词(如
{N}
)和字符类(如
[a-zA-Z]

我不打算为您写出整个正则表达式,因为这是家庭作业,但这里有一些提示可以帮助您:

  • 使用字符类<代码>[A-Z]匹配所有大写字母<代码>[a-z]匹配所有小写字母<代码>[0-9]与数字匹配。您可以像这样组合它们
    [A-Za-z0-9]
  • 使用像
    {n}
    这样的量词,所以
    [A-Z]{3}
    会给出3个大写字母
  • 可以将其他字符放入字符类中。假设你想匹配%或@或#,你可以做
    [%@#]
    来匹配这些字符中的任何一个
  • 某些元字符(在正则表达式上下文中具有特殊含义的字符)需要像这样转义:
    \$
    (因为
    $
    与行尾匹配)
  • ^
    $
    分别匹配行首和行尾
  • \s
    匹配空白,但如果您对输入进行了清理,则不需要使用此选项
  • 正则表达式后的标志做特殊的事情。例如,在
    /[a-z]/i
    中,
    i
    忽略大小写
本规范仅允许15或17个字符;您的正则表达式也将允许16个字符。@Gumbo-这是正确的,我很清楚这一点。那样看起来更好@斯蒂芬-我希望人们没有理由停止添加家庭作业标签。让我们看看首先实现的是什么<代码>[!&@?]就足够了。不清楚这是家庭作业,那只是一些路过的破坏分子。@Roger:即使这本身不是家庭作业,OP显然发现自己在学习正则表达式,并且从教学反应中得到的比完成的答案更多。或者至少这是我的观点。@dmckee:我不是说不应该给出一个教学上的答案;就像非家庭作业问题一样,解释为什么总是更有价值。但是“你不应该得到一个完整的答案,这里有一些提示”这样的回答是有点冒犯性的(充其量)。@罗杰,我不是想冒犯你。我真的以为那是家庭作业(我看了看标签)。它可能是由标记驱动的。但我的答案是假设这是家庭作业。基于我的假设,我认为最好是让人们朝着正确的方向前进,而不是仅仅给他们答案。我并不是想暗示他们不应该得到答案。我只是想帮助他们学习,因为我(可能是错误地)认为这是家庭作业;这是我在家庭作业问题上寻求帮助时的亲身经历(我在学校的时候是在外面),没有投你反对票或任何东西,我认为你做了一个体面的工作,勾勒出各种各样的特征——这是关键问题:无论是做作业还是不做作业,总是把人用正确的方向指向正确的方向总是更好的。我只是不明白为什么答案会因为这个因素而改变。家庭作业不应该是让学生猜的谜语。
^[a-zA-Z][a-zA-Z0-9]{4} ?[a-zA-Z0-9]{5} ?[a-zA-Z0-9]{3}[\!\&\@\?]$