首页 > 解决方案 > 匹配没有单括号的字符串

问题描述

我正在对一些用户输入字段进行基于正则表达式的验证。下面给出需要验证的字符串

{{custName}} With Account Number {{accountnumber}} Your Balance Is {{message_abc.com}}

下面给出了检查字符串的相应正则表达式

[{{[A-Za-z,_.}} ]*

对于上述字符串来说,这绝对可以,但我想要的是:如果字符串是例如:

{custName} With Account Number {accountnumber} Your Balance Is {message_abc.com}

它会给出一个错误。

标签: phpregex

解决方案


这匹配没有任何单括号的字符串:

^(?:(?!(?<!{){(?!{))(?!(?<!})}(?!}))[{[A-Za-z,_.} ])*$
  • (?!(?<!{){(?!{)): 避免在没有另一个之前或之后匹配左大括号
  • (?!(?<!})}(?!})): 避免在没有另一个之前或之后匹配右大括号

演示和解释


推荐阅读