const regex = /^(?!^[0-9])(?![0-9][AZ])(?![AZ0-9*]*\*\*)(?![AZ0-9*]*\*[AZ])((?=[AZ0-9]{6})|(?=[AZ0-9*]*\*))(?![AZ0-9*]*[0-9][A-Z])[AZ0-9*]{1,6}$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(?!^[0-9])(?![0-9][AZ])(?![AZ0-9*]*\\*\\*)(?![AZ0-9*]*\\*[AZ])((?=[AZ0-9]{6})|(?=[AZ0-9*]*\\*))(?![AZ0-9*]*[0-9][A-Z])[AZ0-9*]{1,6}$', 'gm')
const str = `^(?![0-9])(?![0-9][AZ])(?![AZ0-9*]*\\*\\*)(?![AZ0-9*]*\\*[AZ0])(?=[AZ0-9*]*\\*)(?![AZ0-9*]*[0-9][A-Z])[AZ0-9*]{1,6}\$
Broken down:
^(?![0-9])
(?![0-9][AZ])
(?![AZ0-9*]*\\*\\*)
(?![AZ0-9*]*\\*[AZ0])
(?=[AZ0-9*]*\\*)
(?![AZ0-9*]*[0-9][A-Z])
[AZ0-9*]{1,6}\$
Check these for patterns
Following would be valid
*
*1
*1*
*12345
A*
A*2
A*2*
A1*3
A1*3*
A12*4
A*2
A*23
A*234
A*2345
A12*45
A1234*
A*2345
A12*4*
A*23*5
A123*5
*12345
*1234*
*1*3*5
*12*4*
*1*3*5
*123*5
A12345
Examples of invalid entries: <Any ** entry> - <Any * A-Z character> - <Any value longer than 6>
A1
A12
A123
A1234
*A1234
B*
B1*
BA*45
B*2345
**
*1A
*1A1*
*A2345
*123456
1234*
A
**12
*1**
*1*3**
*12**
*1*3*56
*123**
*12*45*
A*23456`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions