Регулярное выражение Javascript, совпадающее со всем

#javascript #regex

#javascript #Регулярное выражение

Вопрос:

У меня есть этот бит Javascript,

 if (/[A-Za-z0-9-] /.test(sZip)) {
   alert(Match!);
}
  

и я использую это в качестве своего тестового примера «1234;»

Я не хочу, чтобы «1234;» совпадало, я хочу, чтобы совпадали только, например, «1234» или «12 34» или «12-34».

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

1. Match! должно содержаться в кавычках.

2. Просто короткое уточнение: должно ли ‘;1234’ совпадать?

3. @exiva, если вы хотите сопоставить все, тогда "12 34" не следует сопоставлять, поскольку оно содержит пробел. Или вы забыли включить его в свой класс символов?

Ответ №1:

 /[A-Za-z0-9-] $/
  

($ — это ключ: это означает конец строки, не более символов)

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

1. Извините, ранее я делал комментарий, рекомендующий добавить ^ , но, похоже, этого, вероятно, не следует делать (см. Мой комментарий под ответом Болдевина).

2. Хм, это правда, снова удалено 🙂

Ответ №2:

Начните регулярное выражение с ^ и завершите его $ . Таким образом, вы указываете ему, чтобы он соответствовал всей строке шаблону. Документы MDN.

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

 /^([A-Za-z0-9] [ -])*[A-Za-z0-9] $/
---^ 0 or more "ABC123-" fields
---------------^ separated by either dash or space
---------------------^ but at least once a "ABC123" field (no dash)
  

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

1. Хм, я не думаю, что OP хочет ^ , чтобы, поскольку он хочет "12 34" , чтобы ему соответствовали, который содержит пробел, которого нет в его наборе символов [A-Za-z0-9-] .

2. Давайте спросим его. Я понял необходимость ^ из названия вопроса.

Ответ №3:

     if (/[A-Za-z0-9-] $/.test(sZip)) { 
      alert(Match!); 
    }  
  

Ответ №4:

Это должно сработать:

 if (/[A-Za-z0-9-] s/.test(sZip)) {
   alert(Match!);
}