匹配以两位数字开头的单词,并在两位数字之后至少包含两个字母字符

时间:2019-06-05 00:54:05

标签: javascript regex

我如何匹配以两位数字开头的单词,而在这两位数字之后,只有一个限制:在两位数字之后至少包含两个字母字符。

例如,下面是匹配的:(两个数字加粗,两个数字开头的至少两个字母字符用斜体表示)

  • 23 d 80 $ 9 s d
  • 41 -+ ms
  • 60 w 3 e
  • 88 qp
  • 15 dk fovi2c
  • 37 21 e k

4 个答案:

答案 0 :(得分:1)

此代码搜索两个数字,然后搜索至少两个字母。它返回数字以及后面的字母。如果找不到匹配项,则返回空。

var arr = ['23d80$9sd','41-+ms','60w3e','88qp','15dkfovi2c','3721e#k']
arr.forEach(e => {
console.log((e.match(/^\d\d.*[a-z].*[a-z]/gi) || []).join(''));
});

要仅获取结果的数字和字母,可以以.replace(/[^\da-z]/gi,"")结尾。

答案 1 :(得分:0)

这似乎适用于您的用例:

const str = "23d80$9sd";
const pattern = /^[0-9]{2}.*[A-Za-z].*[A-Za-z].*/i';
console.log(str.match(patt))

答案 2 :(得分:0)

我将创建一个customMatch函数,如下所示:

function customMatch(string){
  return string.match(/^[0-9]{2}.*[a-z].*[a-z].*$/i);
}
var testArray = ['23d80$9sd', '41-+ms', 'nope', '60w3e', '88qp', '15dkfovi2c', '3721e#k', '99++!++_a'];
for(var i=0,v,m,l=testArray.length; i<l; i++){
  v = testArray[i]; m = customMatch(v);
  if(m){
    console.log(m[0]+' was a match');
  }
  else{
     console.log(v+ ' was not a match');
  }
}

答案 3 :(得分:-1)

您可以使用此正则表达式模式

^(?=.*[a-z].*[a-z])\d{2}.*

enter image description here


演示

let strs = ['23d80$9sd','41-+ms','60w3e','88qp','15dkfovi2c','3721e#k']

strs.forEach(str => {
  let match = /^(?=.*[a-z].*[a-z])\d{2}.*/i.test(str)
  console.log('string :-',str,', Valid match :-',match)
})