城市输入验证正则表达式需求:支持首尾*及单独*
城市输入验证正则表达式解决方案
核心问题分析
原正则^.*[A-Za-zÀ-ÖØ-öø-ž ]{1,34}.*$强制要求字符串包含至少1个合法字母/空格字符,因此无法匹配单独输入*的场景,同时也没限制*的位置,会允许**这类非法格式。
修正后的正则表达式
^(\*)$|^\*?[A-Za-zÀ-ÖØ-öø-ž ]{1,34}\*?$
规则拆解
通过分支结构覆盖所有合法输入场景:
^(\*)$:单独匹配仅输入*的情况^\*?[A-Za-zÀ-ÖØ-öø-ž ]{1,34}\*?$:匹配以下四类合法格式:- 无通配符:纯字母(含重音)和空格组成的字符串,长度1-34
- 仅开头带通配符:
*+ 1-34个合法字符 - 仅结尾带通配符:1-34个合法字符 +
* - 首尾都带通配符:
*+ 1-34个合法字符 +*
验证效果
- 匹配合法输入:
*city、*cit *、*、*city one - 拒绝非法输入:
**(无中间合法字符)、*!@(含非法符号)、%^&*(含非法符号)
内容的提问来源于stack exchange,提问作者Anna Stasinopoulou
相关产品推荐
相关产品推荐

