用于文本框验证的HTML5正则表达式模式:仅允许字母,空格和某些字符

时间:2018-12-29 15:12:45

标签: html regex html5 validation

我正在用html创建一个表单,对于文本输入,我想对其进行正则表达式验证,该验证只允许用户输入:字母,数字和某些字符;

/ - forward slash

- - hyphen

. - period (full stop)

& - ampersand

  - spaces

我尝试过这种模式,但无济于事:

[a-zA-Z0-9\/\-\.\&\ ]

我的HTML代码:

<input type="text" id="payment_reference" name="payment_reference" maxlength="18" value="' . $payment_reference_default . '" pattern="[a-zA-Z0-9\/\-\.\&\ ]" required>

我知道如何仅获取字母字符和数字,但是我也无法管理其他字符。

2 个答案:

答案 0 :(得分:1)

您需要删除每个非特殊字符中的转义,因为在FF(和Chrome)中,HTML5正则表达式使用u修饰符进行编译,并且对模式设置了更大的限制。要启用匹配的1个或更多允许的字符,请在字符类后添加+

pattern="[a-zA-Z0-9/.& -]+"

请注意,您的模式中除-以外的所有特殊字符在字符类中都不是特殊的。因此,只能-进行转义,但是通常将其放在字符类的开头/结尾以避免转义。

input:valid {
  color: black;
}
input:invalid {
  color: red;
}
<form name="form1"> 
 <input pattern="[a-zA-Z0-9/.& -]+" title="Please enter the data in correct format." />
 <input type="Submit"/> 
</form>

答案 1 :(得分:0)

您需要正确转义字符。

-我不是在这里转义,因为当您将其用作字符类中的第一个或最后一个字符时,不需要转义

[a-zA-Z0-9\/.&\s-]

Demo