在 Excel 中如果要限制使用者在某些储存格中输入的内容,则可以使用「资料验证」,再设定资料验证準则,使用者输入不符準则的内容时,会被挑出来要求重新输入,否则无法接受。
如果是在 Google 试算表中,也可以透过「验证资料」工具来加以限制输入的内容。
在 Google 表的中也有像资料验证的概念,在填答者输入不符规定的内容时,予以限制。除了数字、文字、长度等,还有一项:规则运算式。
透过表单设计者自定的规则来检验输入是否合于规定,例如:限制使用者输入的电话必须符合格式:+886nnn-nnn-nnn。
在 Google 表单的规则运算式中可以使用:
符号:
^:起始符号
$:结尾符号
[]:群集符号
{}:数量符号
範例 :
【例】^[we]:开头必须是w或是e。
【例】^[a-zA-Z]:开头只能是一个英文字母(大写或小写皆可)。
【例】[0123456789]$:结尾必须是数字,也可表示为:[0-9]$。
【例】{10} :代表正好10个。
【例】{12,}:代表12个或以上。
【例】{1,5}:代表1~5个之间。
字元符号:
【例】\w:所有英文字元([a-zA-Z])
【例】\W:所有非英文字元([^a-zA-Z0-9])
【例】\d:所有数字([0-9])
【例】\D:所有非数字([^0-9])
【例】+ :前一个字元显示至少1次({1,})
【例】? :前一个字元显示0或1次({0,1})
【例】* :前一个字元显示0或1次以上({0,})
反斜线「\」还代表跳脱字元的意思。如果要使用 +、?、* 等,要以 \+、\?、\* 表示。
如果要检查是否填入+886-nnn-nnn-nnn 的手机号码,例如:+886-123-456-789。
规则运算式:^\+(886)-\d{3}-\d{3}-\d{3}
关于规则运算式,可以参考 Google 所提供的简易说明:
https://support.google.com/docs/answer/3378864,以下为摘录的内容:
运算式 | 说明 | 範例 | 符合 | 不符合 |
. | 英文句号代表指定位置的任何字元。 | d. | do, dog, dg, ads | fog, jog |
* | 字元后面加上星号时,代表搜寻前面字元重複 0 次以上的情形。 | do*g | dog, dg, dooog | dOg, doug |
+ | 字元后面有加号时,代表搜寻这个字元显示 1 次以上的情形。 | do+g | dog, dooog | dg, dOg, doug |
? | 前一个运算式不一定要出现。 | do?g | dg, dog | dOg, doug |
^ | 脱字符号必须放在规则运算式的最前面;该符号代表您要寻找的字串,是以脱字符号后面紧接的字元或序列来开头。 | ^[dh]og | dog, hog | A dog, his hog |
$ | 美元符号必须放在规则运算式的最后面;该符号代表您要寻找的字串,是以美元符号前面紧接的字元或序列来结束。 | [dh]og$ | dog, hog, hot dog | dogs, hog, doggy |
{A, B} | 前一个运算式重複 A 至 B 次,且 A 和 B 都是数字。 | d(o{1,2})g | dog, doog | dg, dooog, dOg |
[x], [xa], [xa5] | 字元集代表其中一个指定字元应该出现在目前的位置。括弧内的字元通常都有效,包括前面运算式包含的字元:[xa,$5Gg.]。 | d[ou]g | dog, dug | dg, dOg, dooog |
[a-z] | 字元集範围代表搜寻指定字元範围内的字元。一般範围包括 a-z、A-Z 和 0-9。您可以将这些範围合併成一个範围:[a-zA-Z0-9]。您也可以将这些範围与字元集 (如前述) 合併:[a-zA-Z,&*]。 | d[o-u]g | dog, dug, dpg, drg | dg, dOg, dag |
[^a-fDEF] | 如果字元集以「^」开始,代表您要搜寻不在指定集合内的字元。 | d[^aeu]g | dog, dOg, dig, d$g | dg, dag, deg, dug |
\s | 所有空格字元。 | d\sg | d g, d[TAB]g | dg, dog, doug |
注意:如果您要寻找的字元在规则运算式中有特殊意义 (例如 ^ 和 $),就必须在搜寻查询中让这类字元「逸出」,也就是在字元前面加上反斜线。举例来说,如果您要搜寻试算表中出现的 $ 字元,就必须输入 \$。
以下是几个运用规则运算式来搜寻试算表的例子:
搜寻包含美元金额的储存格
在 [寻找] 列中输入以下字串:^\$([0-9,]+)?[.][0-9]+
这个字串代表美元金额。第一个数字是出现零次以上的任何 0-9 数字或逗号,后面紧接 [.],然后再重複一次以上的任何 0-9 数字。这项搜寻作业可能会传回下列结果:$4.666、$17.86、$7.76、$.54、$900,001.00、$523,877,231.56
搜寻包含美国邮递区号的储存格
在 [寻找] 列中输入以下字串:[0-9]{5}(-[0-9]{4})?
这代表美国邮递区号包含五位数字,并可选择是否加上连字号以及四码附加编号。
搜寻的储存格内容必须是以小写英文字母开始的名字
在 [寻找] 列中输入以下字串:^[a-z]。
这代表储存格内容包含一个小写英文字母,后面接着另一个出现 0 次以上的字元。这项搜寻作业可能会传回下列结果:bob、jim、gEORGE、marTin