【发布时间】:2017-05-04 12:28:43
【问题描述】:
我正在尝试学习正则表达式并使用pattern 属性将其应用于我的表单。
我有一个表格,要求输入电子邮件、名字、姓氏和密码。我想做的是防止姓氏和名字包含数字。
所以这是我的代码:
<form action="foo.php" method="post">
<label for="email">Email</label>
<input type="email" required class="form-control" id='email-input'>
<label for="firstName">First Name</label>
<input type="text" name="firstName" required class="form-control" id='first-name-input' pattern="[^0-9]" title="First name cannot contains any digits">
<label for="lastName">Last Name</label>
<input type="text" name="lastName" required class="form-control" id='last-name-input' pattern="[^0-9]" title="Last name cannot contains any digits">
<label for="password">Password</label>
<input type="password" required class="form-control" id='password-input'>
<input type='submit' class='btn btn-success pull-right' value='Complete registration' style="margin-top:0.3em">
</form>
但是,即使我没有输入任何数字(只需填写真实姓名),我也会填写所有输入 名字和姓氏输入我收到一条错误消息: 请匹配请求的格式。 我想要一个解释。 为了更好地理解我想在这里做的是一个例子:
如果first-name 的输入是 foo,它不会抛出错误。
如果输入是 foo1 或 1 或 1foo 它会抛出一个错误
【问题讨论】:
-
我认为您需要将
pattern="[^0-9]"替换为pattern="[^0-9]*" -
@WiktorStribizew 我会试试,但你能解释一下为什么吗?
-
@ManosKounelakis 您的模式
[^0-9]表示单个非数字字符,因此它只允许单个字符。在末尾添加*使其成为[^0-9]*,它可以接受一串非数字字符。
标签: javascript regex html validation