Parsley输入框校验问题:允许字母空格连字符撇号的正则不生效
问题根因
你当前使用的正则^[a-zA-Z](?:[ '.\-a-zA-Z]*[a-zA-Z])?$语法本身已经包含了空格匹配逻辑,无法正常识别空格通常为两个原因:
- Parsley 默认开启了自动trim机制,校验前会自动删除输入内容的首尾空格,若你输入的空格在首尾、或输入内容仅含空格,会被提前移除导致校验失败
- 原有规则强制要求输入首尾必须为英文字母,若你输入的内容以空格开头/结尾,也会匹配失败
调整方案
根据你的业务需求选择对应方案即可:
方案1:保留「首尾必须为英文字母,仅中间可出现空格、撇号、连字符」的规则
- 在对应输入框的校验属性中添加
data-parsley-trim="false",关闭Parsley的自动trim逻辑 - 正则无需修改即可正常匹配中间带空格的输入,比如
Anna Lee、Jim Green都可以正常通过校验
方案2:允许首尾出现空格、支持前后带空格的输入
- 同样先添加
data-parsley-trim="false"关闭自动trim - 正则调整为
^(?=.*[a-zA-Z])[a-zA-Z '.\-]+$,该规则可以满足:- 允许输入英文字母、空格、撇号、连字符
- 要求至少包含一个英文字母,避免全是空格/连字符/撇号的无效输入
- 首尾可以是空格,比如
Tom Hanks也能正常通过校验
- 若业务允许空输入,把末尾的
+改成*即可:^(?=.*[a-zA-Z])[a-zA-Z '.\-]*$
内容的提问来源于stack exchange,提问作者saj sta
相关产品推荐
相关产品推荐

