javascript正则表达式匹配3个数字和3个字母

Posted

技术标签:

【中文标题】javascript正则表达式匹配3个数字和3个字母【英文标题】:javascript regex matching 3 digits and 3 letters 【发布时间】:2013-04-22 22:37:59 【问题描述】:

如何匹配字符串中恰好包含“3个数字和3个字母”的单词?

例如100BLA

var regex = ?;
var string = "word word 100BLA word";
desiredString = string .match(regex);

【问题讨论】:

【参考方案1】:

\d 匹配一个数字

[a-zA-Z] 匹配一个字母

3 是精确匹配 3 次重复的量词

^ Anchor 匹配字符串的开头

$ Anchor 匹配字符串的结尾

因此,如果您使用所有这些新知识,您将得到这样的正则表达式:

^\d3[a-zA-Z]3$

更新:

由于在我写完答案后输入示例发生了变化,因此更新如下:

如果您的单词是较大字符串的一部分,则不需要锚点 ^$,而必须使用 word boundaries \b

\b\d3[a-zA-Z]3\b

【讨论】:

正如this comment 中提到的那样,这不起作用,因为它匹配输入的开始和结束而不是单词。 @MariaIoannidou,我确切地知道我的表达方式匹配。当我回答这个问题时,示例字符串是 var string = "100BLA word"; 而不是 var string = "word word 100BLA word"; 不,示例字符串尚未更改。是的,如果匹配不是字符串中的最后一个单词,它会起作用 @stema 我没说你不知道:)。虽然它没有被标记为已编辑,但它可能已经被很快地编辑了。我记得还看到另一个输入,我最初的答案也不同。但即使最初的例子也行不通,对吧? 但是输入没有改变;)【参考方案2】:

首字母(不完整)

var regex = /[0-9]3[A-Za-z]3/;

编辑 1(不完整)

var regex = /[0-9]3[A-Za-z]3\b/; // used \b for word boundary

编辑 2(正确)

var regex = /\b[0-9]3[A-Za-z]3\b/; // used \b at start and end for whole word boundary

【讨论】:

试试var str = "Foobar100BLA"; 也会是真的。 @stema 你是对的。如果我们想要一个单词匹配,我们也应该在正则表达式的末尾使用单词边界匹配 (\b)。但是使用 ^ 和 $,正如您在 your answer 中所建议的那样,将匹配输入的开始和结束,因此示例字符串不会匹配,而应该匹配。我正在适当地编辑我的答案。 您还需要在正则表达式的开头有一个 wordboundary 否则它在 var string = "word word Foobar100BLA word"; 上仍然返回 true @stema 哦,我不知道,谢谢! 谢谢。对不起,我接受了 Stemas 的回答,因为他首先发布了它

以上是关于javascript正则表达式匹配3个数字和3个字母的主要内容,如果未能解决你的问题,请参考以下文章

php正则 匹配 手机、座机号码

JavaScript-正则表达式

sql正则匹配连续增加数字

python3正则表达式笔记

正则表达式

正则表达式实例