Bash
如果它是車牌的格式,我該如何測試?
我需要測試輸入是否具有車牌 (0000-XYZ) 的 fromat 和格式為 000-0000 的日本 ZIP
我假設
0
在您的範例中表示“任何單個數字”,即XYZ
“任何三個大寫字母的字元串”。下面的程式碼進一步假設了一個 POSIX 語言環境。#!/bin/sh for string do case $string in ([0-9][0-9][0-9][0-9]-[A-Z][A-Z][A-Z]) printf '"%s" looks like a number plate\n' "$string" ;; ([0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]) printf '"%s" looks like a Zip-code\n' "$string" ;; (*) printf 'Cannot determine what "%s" is\n' "$string" esac done
這使用通配模式來匹配每個給定的字元串並確定它的類型,或者它的類型是否無法確定。字元串在腳本的命令行中給出。
測試:
$ ./script 1234-ABC 234-2345 AAA-BB "1234-ABC" looks like a number plate "234-2345" looks like a Zip-code Cannot determine what "AAA-BB" is
改用正則表達式
bash
:#!/bin/bash for string do if [[ $string =~ ^[0-9]{4}-[A-Z]{3}$ ]]; then printf '"%s" looks like a number plate\n' "$string" elif [[ $string =~ ^[0-9]{3}-[0-9]{4}$ ]]; then printf '"%s" looks like a Zip-code\n' "$string" else printf 'Cannot determine what "%s" is\n' "$string" fi done
(給定相同的命令行參數,輸出與上面相同。)