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

23
如何在包含“3个数字和3个字母”的字符串中匹配单词?例如:100BLA。
var regex = ?;
var string = "word word 100BLA word";
desiredString = string .match(regex);
2个回答

39

\d 匹配数字

[a-zA-Z] 匹配字母

{3} 是匹配恰好重复3次的量词

^锚定以匹配字符串的开头

$锚定以匹配字符串的结尾

所以,如果您使用所有这些新知识,您将得到一个正则表达式,如下:

^\d{3}[a-zA-Z]{3}$

更新:

由于我的答案写完后输入示例已更改,因此这里是更新:

如果您的单词是较长字符串的一部分,则无需锚点^$,而是必须使用单词边界\b

\b\d{3}[a-zA-Z]{3}\b

正如此评论中所提到的,这种方法不起作用,因为它匹配的是输入的开头和结尾,而不是单词的开头和结尾。 - Maria Ioannidou
@MariaIoannidou,我确切知道我的表达式匹配的是什么。当我回答这个问题时,示例字符串是 var string = "100BLA word"; 而不是 var string = "word word 100BLA word"; - stema
不,示例字符串没有被更改。如果匹配不是字符串中的最后一个单词,它是有效的。 - InTry
@stema 我并没有说你不知道 :). 虽然它没有标记为已编辑,但可能已经被快速编辑过了。我还记得看到另一个输入,我的初始答案也不同。但即使是在最初的例子中也行不通,对吧? - Maria Ioannidou
但输入并没有被改变 ;) - InTry

5

初始化(不完整)

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

EDIT 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
@stema 你说得对。如果我们想要一个单词匹配,我们应该在正则表达式的末尾使用单词边界匹配 **(\b)**。但是,像你在你的回答中建议的那样使用 ^ 和 $,会匹配输入的开头和结尾,所以示例字符串将不匹配,而实际上它应该匹配。 我正在适当地编辑我的回答。 - Maria Ioannidou
1
你还需要在正则表达式的开头加上一个单词边界,否则它仍会返回 var string = "word word Foobar100BLA word"; 中的 true。 - stema
@stema 哦,我不知道,谢谢! - Maria Ioannidou
谢谢。我很抱歉,我接受了 Stemas 的答案,因为他先发布了。 - InTry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接