В ответ на комментарий, приведено сравнение производительности для жадных [a-zA-Z0-9].*[a-zA-Z0-9]
и не жадных [a-zA-Z0-9].*?[a-zA-Z0-9]
.
Жадная версия найдет первую буквенно-цифровую форму, полностью соответствующую концу, и возвратится к последнему буквенно-цифровому, найдя максимально возможное совпадение. Для длинной строки это самая медленная версия. Нежелательная версия находит первый буквенно-цифровой номер и пытается не соответствовать следующим символам до тех пор, пока не будет найден другой алфавитно-цифровой номер (т. Е. Для каждой буквы он соответствует пустой строке), пытается сопоставить [a-zA-Z0-9]
, сбой и соответствует .
).
Бенчмаркинг (эмпирические результаты):
В случае, если буквенно-цифровое изображение находится очень далеко, жадная версия работает быстрее (даже быстрее, чем версия Gumbo).
В случае, если алфавитно-цифровые символы близки друг к другу, жадная версия значительно медленнее.
Тест: http://jsbin.com/eletu/4
Сравнивает 3 версии:
[a-zA-Z0-9].*?[a-zA-Z0-9]
[a-zA-Z0-9][^a-zA-Z0-9]*[a-zA-Z0-9]
[a-zA-Z0-9].*[a-zA-Z0-9]
Вывод: нет. Как всегда, вы должны проверять типичные данные.
Значит, à, ü и ß не должны считаться буквенно-цифровыми? –