#javascript #regex
#javascript #регулярное выражение
Вопрос:
У меня есть URL-маршрут, который я хочу сопоставить, имеет только параметр url
router.get('/:id',function(req,res,next){
}
Теперь проблема в другом URL-адресе, таком как test, все значки соответствуют этому пути. Я хочу сопоставить только URL-путь, который похож на хэш, и другие связанные хэш-строки, которые будут случайными.
$2a%2410$mbh0scotTihKwL69eKwVBuSoAShai4Qo8yY0HLPRlh0Pq0ospfAcm
Я пробовал использовать регулярное выражение, но, похоже, я не получаю совпадение с моим регулярным выражением.
[a-z0-9][-!$%^amp;*()_ |~=`{}[]:";'<>?,./]{50,}$
Я хочу сопоставить любую строку со специальными символами длиной 50 и выше.Кто-нибудь может мне помочь? Спасибо
Комментарии:
1. Я думаю, вы хотели написать
^[-a-zA-Z0-9!$%^amp;*()_ |~=`{}[]:";'<>?,./]{50,}$
или^[a-zA-Z0-9][-a-zA-Z0-9!$%^amp;*()_ |~=`{}[]:";'<>?,./]{49,}$
Ответ №1:
Я хочу сопоставить любую строку со специальными символами длиной 50 и выше
В этом случае вы можете использовать следующий шаблон:
^[-a-zA-Z0-9!$%^amp;*()_ |~=`{}[]:";'<>?,./]{50,}$
Однако, если вам нужно, чтобы первый символ был буквой или цифрой ASCII, вы можете сделать это, либо переписав шаблон как этот:
^[a-zA-Z0-9][-a-zA-Z0-9!$%^amp;*()_ |~=`{}[]:";'<>?,./]{49,}$
^^^^^^^^^^^ ^^^^
Или с помощью предварительного просмотра (чтобы сохранить 50
в качестве аргумента min) (см. Эту демонстрацию):
^(?=[a-zA-Z0-9])[-a-zA-Z0-9!$%^amp;*()_ |~=`{}[]:";'<>?,./]{50,}$
Во всех случаях главное заключается в том, что вам нужно настроить ограничивающий квантификатор в конце / сдвинуть границы классов символов и убедиться, что вы используете ^
привязку к началу строки, если ваша подстрока находится в начале строки. Если это не так, вы должны удалить его.