Узнайте, состоит ли строка из определенного набора символов - PullRequest
4 голосов
/ 14 июля 2011

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

Например

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

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

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

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

Ответы [ 7 ]

6 голосов
/ 14 июля 2011

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

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

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

  • Сначала a {
  • Затем один или несколькозаглавные буквы
  • Тогда }

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

6 голосов
/ 14 июля 2011

Это звучит как хороший пример использования регулярных выражений.В частности, регулярные выражения позволяют сопоставлять диапазон символов - [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
2 голосов
/ 14 июля 2011

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

2 голосов
/ 14 июля 2011

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

1 голос
/ 14 июля 2011

Код 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}

1 голос
/ 14 июля 2011

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

[AZ {}] *

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

1 голос
/ 14 июля 2011

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

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

/^[{}A-Z]+$/.test("{VARIABLE}") // => true
...