【问题标题】:Impossible to send input with 2 characters无法发送 2 个字符的输入
【发布时间】:2016-09-13 12:40:15
【问题描述】:

这很奇怪,但是当我在表单中填写 2 个字符时,它既不会发送错误,也不会出错。

这是我的代码的 sn-p。

HTML 代码

<div class="col-md-6">
    <div class="form-group">
        <label for="form_name">Name</label>
            <input id="form_name" type="text" pattern="^[a-zA-Z]{1}[a-zA-Z\s]{1,}$"
                   name="name" class="form-control" placeholder="Your name"
                   required="required" data-error="Your name is required">
        <div class="help-block with-errors"></div>
    </div>
</div>

PHP 代码

// Check name
if (!preg_match("/^[a-zA-Z]{1,}+[a-zA-Z[:space:]]{2,}$/", $_POST['name'])) { 
  $errors[] = 'Name'; 
}

它与preg_match 和/或正则表达式有关,我试图删除{1} 但没有结果。 {1,} 也不起作用。例如,当我输入 Jo 时,它不会发送或给出错误。当我在它后面加一个空格时,它就像一个魅力。

【问题讨论】:

  • [a-zA-Z]{1,} 状态 1 或更多和 [a-zA-Z[:space:]]{2,} 状态 2 或更多。所以 1 + 2 = 3 所以你必须至少有 3 个字符才能匹配。
  • ^^^ 可能是这个,但你的问题很不清楚,...既不发送是什么意思,如果有错误,你甚至在哪里显示错误?
  • 我认为您应该删除空格字符 \s 并且正则表达式应该使用 2 个或更多字符
  • @AbraCadaver 哈哈,我就知道会这么简单。谢谢!
  • 请将问题更改为已回答状态:)

标签: php regex html forms


【解决方案1】:

问题由 AbraCadaver 回答:

[a-zA-Z]{1,} 表示 1 或更多, [a-zA-Z[:space:]]{2,} 表示 2 或 更多的。所以 1 + 2 = 3 所以你必须至少有 3 个字符才能匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 2011-04-24
    • 2018-04-27
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2019-09-01
    相关资源
    最近更新 更多