Как разрешить использовать знак ‘ с регулярным выражением?

#javascript #regex

Вопрос:

В данный момент я использую это регулярное выражение для проверки адреса

 (!/^[A-Za-z]/i.test(street))
 

Когда я использую такой адрес — Эстерверген — это работает.

Но когда я добавил знак перед заголовком — «Эстерверген» — это показывает мою ошибку.

Хо я могу изменить свое регулярное выражение и разрешить использовать этот знак перед именем?

Комментарии:

1. Наверняка вы допустили опечатку и имели в виду .test(street) ?

2. Попробуй (!/^[A-Za-z']/i.test(street))

3. @JeremyThille Да, извини, что я его изменил! Спасибо

Ответ №1:

Чтобы разрешить необязательное начало ' , вы бы изменили свое регулярное выражение с

 /^[A-Za-z]/
 

Для

 /^'?[A-Za-z]/
 

где ? означает «ноль или один раз».

Если вы хотите разрешить ' любое место в вашей строке,

 /^['A-Za-z]/
 

это бы сработало.

Кроме того, убедитесь, что вы понимаете, что проверяете только первый символ строки, как он есть.

Прямо сейчас вы позволите Ester9ui4y6ewigkdlLNDSKJ#€=# ::: .

Чтобы ограничить это, вам понадобится квантор и $ якорь (конец строки).

 /^[A-Za-z] $/
 

Ответ №2:

Давайте посмотрим, на что нацелены ваши регулярные выражения:

  • /^[A-Za-z]/i
  • ^ : Утверждает позицию в начале строки.
  • [] : Сопоставьте один символ в зависимости от того, что внутри.
  • A-Z : Сопоставьте заглавные буквы от A до Z .
  • a-z : Сопоставьте строчные буквы от a до z .
  • i : Без учета регистра.

Подумайте об этом:

  • Использование [A-Za-z] вместе с i флагом является избыточным. Используйте /^[a-z]/i или /^[A-z]/ вместо этого.
  • Использование [a-zA-Zu00C0-u00FF] , например, расширяет соответствие латинским символам с использованием синтаксиса ЮНИКОДА. Смотрите полную ссылку на ЮНИКОД здесь.
  • Используйте /^['a-z] /i для разрешения ' в любом месте строки.
  • Используйте /^'?[a-z] /i , чтобы разрешить ' только в начале строки. ? означает «1 раз или 0 раз».

Чтобы поиграть с регулярным выражением, вы можете использовать такие инструменты, как этот.