Узнайте, состоит ли строка из определенного набора символов

Как я могу выйти, если строка содержит только определенный набор символов: {A-Z а также }?

Например

  • {VARIABLE} => должен вернуть true
  • {VARiABLE} => должно быть ложным, потому что есть строчные i внутри
  • { VARIABLE} => должно быть ложным, потому что есть пробел и т. д.

О, очень важно

строка ДОЛЖНА иметь хотя бы один символ между { а также }, так:

  • {} тоже должно быть ложным...

7 ответов

Решение

В этом случае используйте:

/^{[A-Z]+}$/.test(str);

Регулярное выражение представляет любую строку в формате:

  • Первый {
  • Затем одна или несколько заглавных букв
  • Затем }

^...$ гарантирует, что строка должна быть именно этой формы, а не только подстрокой (в противном случае test{AAA} будет соответствовать тоже).

Это звучит как хороший случай для использования регулярных выражений. В частности, регулярные выражения позволяют сопоставить диапазон символов - [A-Z{}] будет соответствовать любому символу, который является заглавной буквой, {, или же },

РЕДАКТИРОВАТЬ на основе новых требований - вы хотите сопоставить то, что начинается с буквального {затем имеет хотя бы один символ в диапазоне A-Zзатем закрытие }, Что дает регулярное выражение:

{[A-Z]+}

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

val input = "{VARIABLE}"
return input.test(/{[A-Z]+}/) // returns true

"{VARiABLE}".test(/{[A-Z]+}/) // returns false
"{ VARIABLE}".test(/{[A-Z]+}/) // returns false

"".test(/{[A-Z]+}/) // returns false - open bracket didn't match
"{}".test(/{[A-Z]+}/) // returns false - A-Z part didn't match

Сделайте отрицательное совпадение с регулярным выражением. Если вы соответствуете что-то вроде /[^A-Z{}]/ и получить успех, то строка содержит что-то, что "не разрешено".

Используйте это регулярное выражение: ^[A-Z{}]+$, Это позволяет только A-Z а также {}

Используйте это выражение.

[AZ{}]*

Здесь квадратные скобки [] настаивают на том, какие символы должны присутствовать, и * говорят, что этот шаблон может повторяться несколько раз.

Код Jquery:

$(document).ready( function(){                          
   $('#test_regex').click( function(){
      regex= /^{[A-Z]+}$/;
      str= $('#reginput').val();
      result= regex.test(str);
      if( result ){
        alert("It's the correct value, yes it's right");
      }else{
        alert("It's incorrect value.. You know");
      }
   });
});

HTML-код:

<input type="text" id="reginput"/>
<button id="test_regex">Check Value</button>

Будет возвращено предупреждение ("Это правильное значение, да, это правильно"), если значение равно {UPPERCASELETTERS}

Попробуйте это регулярное выражение...

/^[{}A-Z]+$/

/^[{}A-Z]+$/.test("{VARIABLE}") // => true
Другие вопросы по тегам