Регулярное выражение для сопоставления строки URL-адреса с хэшем

#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,}$
  

Во всех случаях главное заключается в том, что вам нужно настроить ограничивающий квантификатор в конце / сдвинуть границы классов символов и убедиться, что вы используете ^ привязку к началу строки, если ваша подстрока находится в начале строки. Если это не так, вы должны удалить его.