字段验证正则表达式问题:无法匹配重复连字符与点
问题解决:允许重复连字符和点的字段验证正则表达式
你的问题出在字符集里的连字符位置——虽然字符集内的-理论上无需转义,但如果放在两个字符之间,容易被正则引擎误判为范围定义符号(比如a-z表示a到z的字符范围)。你当前的正则/^[a-zA-Z-. ]+$/中,Z-.是无效范围(Z的ASCII码大于.),部分引擎会忽略这个无效范围,但会导致连字符的匹配逻辑异常,进而无法识别重复的-或.。
修正后的正则表达式
把-移到字符集的开头或结尾,明确它作为普通字符的身份:
/^[-a-zA-Z. ]+$/
或者:
/^[a-zA-Z. -]+$/
验证结果
String→ 匹配成功Str- in.g→ 匹配成功String--→ 匹配成功String...→ 匹配成功
修改后,正则就能正确匹配所有允许的字符,包括重复出现的连字符和点。
内容的提问来源于stack exchange,提问作者Richard Black
相关产品推荐
相关产品推荐

