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

z9zf31ra  于 2023-06-25  发布在  HTML5
关注(0)|答案(2)|浏览(216)

我在html中创建一个表单,对于文本输入,我希望在上面有一个regex验证,只允许用户输入:字母、数字和某些字符;

/ - 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>

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

lnlaulya

lnlaulya1#

2023年更新

现在,您需要始终转义字符类中字符类末尾的文字连字符,因此使用

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

原始答案

你需要删除every non-special char中的escaping,因为在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>
a8jjtwal

a8jjtwal2#

你需要正确地转义角色。
-我在这里没有转义,因为当你把它用作字符类中的第一个或最后一个字符时,你不需要转义

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

Demo

相关问题