复杂字符串格式验证

时间:2017-02-09 06:04:15

标签: go

我正在使用Go 1.7.4。有什么方法可以验证字符串以遵循特定模板。例如,这是我的字符串(请忽略IF,然后将这些视为字符串的一部分)

IF NAME: A> B> C
 AND  AS: 10796
   OR DIVISION: X> Y> Z
 AND  IP : 107.211.11.0/22
   OR IP PREFIX: 66.144.0.0/16
THEN 
    #1: PASS(60%), FAIL(40%)
    #2: PASS(40%), FAIL(35%), DISTINCTION(25%)

元素将相同但出现次数可能不同。例如:A > B而不是A > B >C可能还有一个条款#3,依此类推。 AND OR块也可以重复。有没有办法让我有一个模板来验证这个结构。我们可以将其转换为一些JSON模式吗?

1 个答案:

答案 0 :(得分:2)

您可以在go

中使用ebnf
  

EBNF是一种表达形式语言语法的代码。一个   EBNF由终端符号和非终端生成规则组成   这是限制终端符号如何的限制   合并成一个合法的序列。终端符号的示例包括   字母数字字符,标点符号和空格字符。

以下是包doc:ebnf