b*
означает «соответствовать нулю или большему количеству вхождений b
».
.
означает «соответствовать любому символу, кроме новой строки».
[EE|EJU]
означает «соответствует E
, |
, J
или U
».
.*
означает «соответствовать любому символу, кроме символа новой строки ноль или более раз».
D
означает «соответствовать a D
».
Итак, регулярное выражение делает то, что вы просили.
Из примеров, приведенных вами в вашем вопросе, я предполагаю, что действительные правила должны быть:
- Строка начинается с
KD-R35
.
- Затем может следовать любое количество буквенно-цифровых символов, если
- среди них есть
E
, J
или U
и
- строка заканчивается на
D
.
Эти правила, как регулярное выражение, гласят:
^ # start of string
KD-R35 # literal text
( # start of capturing group
\w* # any number of alphanumeric characters
[EJU] # at least one of E, J, or U
\w* # any number of alphanumeric characters
D # a D
) # end of capturing group
$ # end of string
или, в JavaScript:
match = subject.match(/^KD-R35(\w*[EJU]\w*D)$/i);
if (match != null) { // successful match
mytext = match[1] // capturing group 1
} else {
// Match attempt failed
}
Я предполагаю, что прописные / строчные буквы не имеют значения.
РЕДАКТИРОВАТЬ: Эм, ваше новое редактирование меняет правила. Кажется, что любая строка допускается, если она начинается с KD-R35
и заканчивается D
. В этом случае регулярное выражение будет просто /^KD-R35(\w*D)$/i
.