4

如果一个字符串只包含一组特定的字符,我该如何判断:{ A-Z}

例如

  • {VARIABLE}=> 应该返回 true
  • {VARiABLE}=> 应该是假的,因为里面有一个小写i字母
  • { VARIABLE}=> 应该是假的,因为有空格等。

哦,很重要:

字符串必须在{and之间至少有一个字符},因此:

  • {}也应该是假的...
4

7 回答 7

6

这听起来像是使用正则表达式的好例子。特别是,正则表达式允许匹配一系列字符 -[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
于 2011-07-14T14:50:48.827 回答
6

在这种情况下使用:

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

正则表达式表示任何格式的字符串:

  • 首先一个{
  • 然后是一个或多个大写字母
  • 然后一个}

^...$确保字符串应该完全是这种形式,而不仅仅是一个子字符串(否则也会test{AAA}匹配)。

于 2011-07-14T14:54:19.147 回答
2

使用这个正则表达式:^[A-Z{}]+$. 它只允许A-Z{}

于 2011-07-14T14:51:09.327 回答
2

做一个否定的正则表达式匹配。如果您匹配类似/[^A-Z{}]/的内容并获得成功,则该字符串包含“不允许”的内容。

于 2011-07-14T14:51:52.763 回答
1

试试这个正则表达式...

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

/^[{}A-Z]+$/.test("{VARIABLE}") // => true
于 2011-07-14T14:50:53.193 回答
1

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} ,它将返回警报(“它是正确的值,是的,它是正确的”)

于 2011-07-14T14:59:10.130 回答
1

使用这个表达式。

[AZ{}]*

这里的方括号 [] 坚持要出现什么字符, * 表示这种模式可以重复多次。

于 2011-07-14T14:52:37.647 回答