замена римских цифр I-XXX на RegEx

Удаление заголовков глав римскими цифрами (не более 30, после которых следует пробел, а затем двоеточие) я использую:

str = str.replace(/^((X{0,3})(I{0,1})(V{0,1})(X{0,1})(I){0,3}:\s+?)$/gim, "");

Только он кажется сверхмедленным. Где я ошибаюсь?


person Ghoul Fool    schedule 06.08.2015    source источник
comment
Этот лучше: ^(X{0,3})(I?)(V?)(X?)(I{0,3}):\s+?$? Почти то же самое, но немного подчищенное.   -  person Wiktor Stribiżew    schedule 06.08.2015
comment
Почему ваши совпадения заключены в скобки?   -  person hjpotter92    schedule 06.08.2015
comment
@hjpotter92 Мне было плохо в день съемок группы?   -  person Ghoul Fool    schedule 06.08.2015


Ответы (1)


/^([IVX]+:\s+?)$/gim

Это будет работать немного быстрее, он ищет символы римских цифр как набор символов. Кроме того, ваша текущая версия будет соответствовать строке только с двоеточием (без римских цифр).

person Louis Ricci    schedule 06.08.2015
comment
Это, возможно, не имеет практического значения, но я думаю, что это также будет соответствовать некоторым недопустимым комбинациям символов, таким как VV или IIIX. - person Anders; 07.08.2015
comment
@Anders - это хорошее примечание / предостережение, это решение, настроенное специально для проблемы OP, а не регулярное выражение для сопоставления римских цифр общего назначения. - person Louis Ricci; 07.08.2015