2017-07-22 68 views
1

我想为我的一个项目做一个微调,我有一个文本区域,如果大括号关闭,文本没有,我想验证文本尖括号。MVC C#单个正则表达式来验证大括号和尖括号

到目前为止,我可以检查是否有文字与目前[^<>]*

任何尖括号我有这个字符串{hello|hi|hey} arbaz, {how are you?|how you doing} ,我想,如果大括号正确关闭验证。例如string不能

{{hello|hi|hey}} arbaz, {{how are you?|how you doing}}

OR

{{hello|hi|hey} arbaz, {how are you?|how you doing}}

它不能在大括号包裹物。

\{{?>\{{?<c>}|[^{}]+|\}{?<-c>}}*{?{c}{?!}}\}是我的正则表达式。

我需要一个正则表达式,它可以用大括号进行验证,并且不允许使用尖括号。请原谅我的糟糕英语。由于

+0

我能得到你的权利,你想匹配的是包含比'{'和'}'或'{...}'子,没有这些也可以匹配''<' and '>其他任何字符的字符串?尝试'^(?:[^ <> {}] | {[^ <> {}] *})* $' –

+0

请参阅[这里](http://regexstorm.net/tester?P =%5E%28%3F%3A%5B%5E%3C%3E%7B%7D%5D%7C%7B%5B%5E%3C%3E%7B%7D%5D *%7D%29 *%24&I =%7bhello%7chi%7chey%7D + arbaz%2C +%7bhow +为+你%3F%7chow +你+做%7D%0D%0A%7B%3chello%3E%7chi%7chey%7D + arbaz%2C +% 7bhow +是+您%3F%7chow +你+做%7D%0D%0A%7B%7bhello%7chi%7chey%7D%7D + arbaz%2C +%7B%7bhow +是+您%3F%7chow +你+做%7cwhat%-27 +向上%7D%7D%0D%0A%7B%7bhello%7chi%7chey%7D + arbaz%2C +%7bhow +是+您%3F%7chow +你+做%7cwhat%-27 +向上% 7d%7d%0d%0a&o = m) –

+0

@WiktorStribiżew非常感谢您的评论,它的工作方式就像我想要花括号一样。你可以请添加检查是否存在HTML标签,例如'<>'谢谢 –

回答

2

要匹配包含除{} OR {...}子其他任何字符的字符串,并没有这些也可以搭配<>字符。

您可以使用

^(?:[^<>{}]|{[^<>{}]*})*$ 

regex demo

它匹配:

  • ^ - 串
  • (?:开始 - 非捕获组开始
    • [^<>{}] - 任何字符但<>{}
    • | - 或
    • { - 一个{
    • [^<>{}]* - 比<>{}
    • } 0+其它字符 - a } char
  • )* - 重复组模式0+次
  • $ - 字符串结尾。
+0

非常感谢你的快速帮助。上帝保佑。 –

+1

如果'<...>'不在'{...}'之内,那么它应该给出一个错误。 –

+0

@ArbazAbid目前,该模式不允许在任何地方使用'<' and '>'。 –