如何使用数字和字母的完全匹配创建Javascript正则表达式模式?

时间:2017-06-17 06:00:40

标签: javascript regex pattern-matching

这是我的场景我想要创建JavaScript正则表达式模式,必须具有8个字符且具有以下约束

  • 一个字母[A-Z](仅限大写字母)
  • 七位[0-9]

    var data = ['A1234567', '1234567', 'C1234567'];
    data.map(function(q, index) {
    if (q.match(/[A-Z]{1}^\d{7}$/gi)) {
       console.log('Data ' + index + 'matched', q)
     } else {
      console.log('Not matched')
     }
    });
    

正则表达式是 / [A-Z] {1} ^ \ d {7} $ / gi

这三个都不匹配。这就是我做错了什么?

3 个答案:

答案 0 :(得分:1)

尝试以下正则表达式:

[A-Z][0-9]{7}

<强>解释

[A-Z]               Match initial capital letter
[0-9]{7}            Match 7 numbers

在这里演示:

&#13;
&#13;
var data = ['A1234567', '1234567', 'AC123456', 'a1234567', '123G4567'];
data.map(function(q, index) {
if (q.match(/^[A-Z][0-9]{7}/gm)) {
   console.log('Data ' + index + ' matched', q)
 } else {
  console.log('Data ' + index + ' not matched', q)
 }
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

尝试使用以下正则表达式,假设在字符串开头处使用字母字符。

^[A-Z][0-9]{7}

var data = ['A1234567', '1234567', 'C1234567'];
data.map(function(q, index) {
if (q.match(/^[A-Z][0-9]{7}/gm)) {
   console.log('Data ' + index + 'matched', q)
 } else {
  console.log('Not matched')
 }
});

答案 2 :(得分:0)

你的正则表达式错了。请尝试以下代码:

var data = ['A1234567', '1234567', 'C1234567'];
var regex = /[A-Z]{1}\d{7}/gi;
data.map(function(q, index) {
  if (q.match(regex)) {
     console.log('Data ' + index + ' matched', q)
   } else {
     console.log('Not matched')
   }
});

作为奖励,如果您只想使用匹配的模式返回已过滤的数组:

var data = ['A1234567', '1234567', 'C1234567'];
var regex = /[A-Z]{1}\d{7}/gi;
var filteredArray = data.filter(function(q) {
  return q.match(regex)
});

console.log(filteredArray); // will be ['A1234567', 'C1234567'];