正则表达式

时间:2020-07-22 12:14:33

标签: php regex

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

{{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}

会给出错误。

2 个答案:

答案 0 :(得分:1)

这将匹配没有大括号的字符串:

^(?:(?!(?<!{){(?!{))(?!(?<!})}(?!}))[{[A-Za-z,_.} ])*$
  • (?!(?<!{){(?!{)):避免在匹配大括号之前或之后不使用大括号
  • (?!(?<!})}(?!})):避免匹配右花括号,而前后不要匹配

Demo & explanation

答案 1 :(得分:0)

您可以匹配{{...}},然后匹配字符类,而无需空格和花括号。

然后将整个0+重复一次,并至少匹配{{...}}部分的一次。

^(?:\{\{[A-Za-z,_.]*}}[A-Za-z,_. ]*)*\{\{[A-Za-z,_.]*}}$
  • ^字符串的开头
  • (?:非捕获组
    • \{\{[A-Za-z,_.]*}}匹配{{...}}}
    • [A-Za-z,_. ]*(可选)重复字符类中列出的所有字符
  • )*关闭群组并重复0次以上
  • \{\{[A-Za-z,_.]*}}至少匹配一次{{...}}}
  • $字符串结尾

Regex demo | Php demo

之前和之后是否还有内容:

^[A-Za-z,_. ]*(?:\{\{[A-Za-z,_.]*}}[A-Za-z,_. ]*)+[A-Za-z,_. ]*$

Regex demo