]*class\s*=\s*"[^"]*\bform-group\b[^"]*"[^>]*>(?:(?!
]*class\s*=\s*"[^"]*\bform-group\b[^"]*").)*?data-rule="[^"]*?(required|checked)[^"]*?"[^>]*>/si';
        $result = preg_replace_callback($regex, function ($matches) use ($config) {
            return str_replace("form-group", "form-group required-{$config['asteriskposition']}", $matches[0]);
        }, $content);
        $content = is_null($result) ? $content : $result;
        // 匹配
        $pattern = '/(
]*>)\s*| ]*>(.*?)<\/td>\s* | ]*>.*?]*data-rule="[^"]*required[^"]*"[^>]*>.*?<\/td>\s*<\/tr>/si';
        $result = preg_replace_callback($pattern, function ($matches) use ($config) {
            if (preg_match('/( | 
]*)class\s*=\s*"[^"]*"/i', $matches[1])) {
                return preg_replace('/(
]*)class\s*=\s*"([^"]*)"/i', '$1class="$2 required-' . $config['asteriskposition'] . '"', $matches[0]);
            } else {
                return str_replace("
getConfig();
        $config['area'] = preg_match("/\[(.*?)\]/i", $config['area']) ? array_slice(array_values((array)json_decode($config['area'], true)), 0, 2) : $config['area'];
        $config['shade'] = floatval($config['shade']);
        $config['shadeClose'] = boolval($config['shadeClose']);
        $params['betterform'] = $config;
    }
}