这是我的场景我想要创建JavaScript正则表达式模式,必须具有8个字符且具有以下约束
七位[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
这三个都不匹配。这就是我做错了什么?
答案 0 :(得分:1)
尝试以下正则表达式:
[A-Z][0-9]{7}
<强>解释强>
[A-Z] Match initial capital letter
[0-9]{7} Match 7 numbers
在这里演示:
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;
答案 1 :(得分:0)
尝试使用以下正则表达式,假设在字符串开头处使用字母字符。
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'];