【问题标题】:Validation pattern in Yii2 form to allow alphabet, space and some symbol onlyYii2 形式的验证模式只允许字母、空格和一些符号
【发布时间】:2017-09-27 13:19:37
【问题描述】:

首先,我已阅读并遵循许多问题/文章的建议。而这个issue 是最接近的。但这并没有解决我的问题。

我的表单中有一个工作职位的文本字段,我需要像这样添加验证:

  1. 拒绝数字和符号例外:-,.
  2. 允许字母和空格

我在 modal.php 中添加了这样的内容

 'pattern' => '/^([a-z]+-)*[a-z]+$/i'

但它拒绝了空间,,.

这是上面链接中的模式:

'pattern' => '/^[a-zA-Z-,]+(\s{0,1}[a-zA-Z-, ])*$/'

但它不允许.

也许任何人都可以帮助我修复上面的模式,我也希望能对模式有所了解。

谢谢

【问题讨论】:

  • 你想限制字符串开头和结尾的字符吗?或者字符串只是空格的情况?还是全部-s?如果没有,请使用'/^[a-z,.\s-]+$/i'
  • 或者您是否需要确保非空白字符仅出现在字符串的开头/结尾?试试'/^[a-zA-Z.,-]+(?:\s[a-zA-Z.,-])*$/'
  • 我需要确保开头和结尾都没有空格和字符。而且你的两种模式都有效,非常感谢:)我想问你一些事情,如果它不打扰你:)
  • 是的,只需在我的答案下方发表评论。
  • 我的问题已经被你下面的回答回答了:D

标签: regex validation yii2 pattern-matching preg-match


【解决方案1】:

如果您需要确保非空白字符仅出现在字符串的开头/结尾,请使用

'/^[a-zA-Z.,-]+(?:\s[a-zA-Z.,-]+)*$/'

请参阅regex demo

详情

  • ^ - 字符串开头
  • [a-zA-Z.,-]+ - 1 个或多个 ASCII 字母,.,-
  • (?:\s[a-zA-Z.,-]+)* - 零次或多次出现
    • \s - 一个空格
    • [a-zA-Z.,-]+ - 1 个或多个 ASCII 字母,.,-
  • $ - 字符串结尾(或\z 匹配字符串的最后)

如果您不想限制字符串开头和结尾的字符,只需使用

'/^[a-z,.\s-]+$/i'

详情

  • ^ - 字符串开头
  • [a-z,.\s-]+ - 1 个或多个 ASCII 字母、.,- 或空白字符
  • $ - 字符串结尾(或\z 匹配字符串的结尾)

this regex demo

【讨论】:

    【解决方案2】:

    试试这个:

     ['position','match', 'pattern' => '[a-zA-Z][a-zA-Z., ]+$/;', 'message' => 'Job Position can only contain Alphabet and Spaces only'],
    

    【讨论】:

      猜你喜欢
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      相关资源
      最近更新 更多