字符串验证器

对字符串值进行测试,以确定其是否符合一组 JSF 验证约束。

StringValidator 用于测试某个值是否符合一组验证约束。您应该将一个 JavaScript™ 字符串传递给此验证器。如果该字符串是带掩码字符串,则应该先使用 MaskConverter 将其转换为字符串(除去字面值),然后再将其传递给此验证器。

可以在构造验证器时提供验证约束,也可以使用 GetAttribute/SetAttribute 调用来添加/除去验证约束。可以提供任意数目的约束。不提供约束是没有意义的。

如果提供了 required 约束并设置为 true,则验证器将要求值不为空,即,该值既不是空值,也不是空字符串。如果未设置 required,则会将空值/空字符串视为有效值,而不考虑任何其他约束。即,如果未设置 required,则空值始终是有效值。

如果指定了最小长度作为约束,则值的长度(如果不为空)必须大于或等于指定的长度。如果指定了最大长度作为约束,则值的长度必须小于或等于最大长度。

如果提供了正则表达式,则该值必须至少与该表达式匹配一次。(value.match(exp) != null) 必须求值为 true。您可以提供正则表达式,也可以提供对预先构建的正则表达式的引用。

可以使用 JavaScript EL 表达式来测试某个值是否在集合内以及测试某个值是否在不连续的范围内,等等。目前,不能使用此表达式将一个值与页面上的另一个值进行比较。

将按以下顺序对约束进行测试,尽管这对验证结果并无影响:
  1. required
  2. minimum-bound
  3. maximum-bound
  4. constraint
  5. constraint-regexpression
  6. constraint-expression

JavaScript 构造函数

hX_5.addValidator("id", new hX_5.StringValidator(attributes)); 其中

id

组件所连接至的 HTML 标记的 ID。

属性

表 1. 字符串验证器属性

属性名称

描述

required

如果是必需的,则该值可能不能为 NULL 或空字符串。如果不是必需的,则该值可以为 NULL 或空字符串,并跳过其他验证约束。

minimum-length

字符串必须包含的最小字符数目。

maximum-length

字符串必须包含的最大字符数目。

constraint-regexpression

Java™ 正则表达式,值必须至少匹配该表达式一次。请参阅 Java 文档以获取正则表达式的描述。

constraint

应用预定义的正则表达式。提供下列预定义的表达式:
  • AlphabetExOnly 表示 ^[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]+$
  • AlphabetOnly 表示 ^[A-Za-z]+$
  • DigitOnly 表示 ^[0-9]+$
  • AlnumExOnly 表示 ^[A-Za-z0-9\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]+$
  • AlnumOnly 表示 ^[A-Za-z0-9]+$
  • UpperCaseOnly 表示 ^[A-Z]+$
  • LowerCaseOnly 表示 ^[a-z]+$

constraint-expression

必须满足的 JavaScript EL 表达式。JavaScript EL 表达式与 JSF EL 表达式相同,但以下各方面除外:
  • 不能使用“字符串”格式来表示运算符,例如,use == not .eq.。
  • 可以引用的唯一值是 @testValue,它表示要进行测试的值。
  • 可通过使用 Java 访问者来访问 @testValue 中的日期/时间组件。具体地说,可以使用 .date、.day、.hours、.minutes、.month、.seconds、.timezoneOffset、.time 和 .year。

API 调用

表 2. API 调用

API 调用

描述

boolean = validate(value)

对字符串进行验证。如果值通过验证,则返回 true。如果值失败,则返回 false,并设置 lastError。

string = lastError()

如果转换失败,则将失败原因作为本地化字符串返回。

object = setAttribute(attribute)

设置属性,或如果以前已设置属性,则更改其值。

string = getAttribute(attribute-name)

检索属性的当前值。

示例代码

验证输入字段的值。

// Construct a validator that checks that a string looks like an email address
hX.addValidator("1Z", new hX.StringValidator("required:true", "minimum-length:5", 
                  "constraint-regexpression:"^[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,4}$"));

// Validate a value
var x = document.getElementById("form1:textA");
var v = hX.getValidatorById("1Z");
if (!v.validate(x.value)) alert ("ERROR: " + v.lastError());

反馈