C正則表達式是用來匹配與處理字符串的工具,可以有效地用來判斷JSON格式是否正確。JSON是現在前后端數據交換的重要方式之一,其格式通常為:
{ "name": "John", "age": 30, "city": "New York" }
我們可以使用正則表達式來判斷一個字符串是否為一個合法的JSON格式。例如,下面是一個判斷JSON格式是否正確的C程序:
#include#include int main() { regex_t regex; int ret; char msgbuf[100]; const char * json = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }"; const char * pattern = "^[[:space:]]*\\{[[:space:]]*(\"[[:alnum:]_]+\"[[:space:]]*:[[:space:]]*(\"[^\"]*\"|[0-9\\.-]+))[[:space:]]*(,[[:space:]]*\"[[:alnum:]_]+\"[[:space:]]*:[[:space:]]*(\"[^\"]*\"|[0-9\\.-]+))*[[:space:]]*\\}[[:space:]]*$"; ret = regcomp(®ex, pattern, REG_EXTENDED); if (ret) { fprintf(stderr, "Could not compile regex\n"); return 1; } ret = regexec(®ex, json, 0, NULL, 0); if (!ret) { printf("JSON is valid!\n"); } else if (ret == REG_NOMATCH) { printf("JSON is not valid!\n"); } else { regerror(ret, ®ex, msgbuf, sizeof(msgbuf)); fprintf(stderr, "Regex match failed: %s\n", msgbuf); return 1; } regfree(®ex); return 0; }
上面的代碼中,使用了正則表達式 "^[\s]*\{[\s]*(\"[[:alnum:]_]+\"[\s]*:[\s]*(\"[^\"]*\"|[0-9\\.-]+))[\s]*(,[\s]*\"[[:alnum:]_]+\"[\s]*:[\s]*(\"[^\"]*\"|[0-9\\.-]+))*[\s]*\}[\s]*$" 來匹配一個JSON格式的字符串。
使用正則表達式進行JSON格式的判斷,可以有效避免不合法的JSON數據被處理,提高編程的安全性和效率。
下一篇vue不驗證分號