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个字母的主要内容,如果未能解决你的问题,请参考以下文章