文本框无法接受非英文字符的技术分析

    xiaoxiao2025-05-22  9

    关于文本框无法输入非英文字符的现象,在日常国际化测试工作中出现的概率极大。为了限制用户的输入必须符合软件定义的规范,开发人员一般都会对输入框中的value通过正则表达式或事件进行校验。如下图所示,当cost type被设置为“日本语”时,错误框将弹出,操作也无法继续进行。 本例中将以正则表达式作为假定的技术背景,对这一现象进行分析,示例代码如下。 public class CostConfigDTO { ... @NotNull @Size(min = 1, max = 255, message = "Size range set to 1-255") @Pattern(regexp = ".*[a-zA-Z0-9].*", message = "Category types must contain at least one alphanumeric character") ... }  这里我们可以清晰的看到,对该输入框value进行验证的正则表达式被设置为[a-zA-Z0-9],即只允许输入大小写的字母a-z外加数字0-9。然而这一设置显然是国际化软件开发中的兵家大忌,为了修复该问题,我们可以对代码进行如下修改。 public class CostConfigDTO { ... @NotNull @Size(min = 1, max = 255, message = "Size range set to 1-255") @Pattern(regexp = "^([^\\S+]).*", message = "Category types must not begin with a white space") ... }  这里我们用\S替换掉之前的[a-zA-Z0-9],它可以匹配任何非空白字符,等价于 [^ \f\n\r\t\v]。改动后,本例中的非英文字符无法输入问题得到解决。然而需要注意的是,正则表达式中的pattern取消了之前的严格验证机制,原有问题不再出现,但在其他场景中势必引入新的国际化问题,例如转义字符等,这又是我们需要进一步考虑的。
    转载请注明原文地址: https://ju.6miu.com/read-1299150.html
    最新回复(0)