In modern card games, you have often a few cards that break the rules. For example: a red card has to be played always before a yellow card, except when you have a blue card in hand which allows to reverse the order, or a green card which allows to ignore the order. Another example: if you get the Mad King card, you can play any attack card as a Frenzy attack card (thus requiring a way for the user to choose between the two possibilities).
In my two card games, I had to write specific code for many cards so I'm not optimistic about a generic system. Anyway, if you succeed in solving most cases about rules with scripting, you will face a new Everest of complexity: the visual building of the cards. A poker card does not look like a Pokemon card. The easy solution is to load an image for each card. It's a very bad solution IMO because it takes a lot of memory. Imagine a game with 300 cards in two resolutions (eg. 1280x1024, 1920x1080). And it's a waste of resources when you have similar visuals with just a different element (like different attack cards with the same visual but a different attack value). Moreover, if you don't include a high resolution, it may be visually horrible on some devices. The "single image" solution was used in the Android version of Magic a few years ago (I did not test the recent versions). The application was obese and the result was horrible on my tablet (blurry image, text difficult to read). Zooming is of course not really possible as it just increases the bluriness.