1
<input type="text" name="address" pattern="[0-9a-zA-Z ,\.\/\-&']{0,}">
它会允许所有除了少数特殊字符但我不想'//''///'或任何特殊字符像这样重复。我应该改变什么?javascript模式的正则表达式
<input type="text" name="address" pattern="[0-9a-zA-Z ,\.\/\-&']{0,}">
它会允许所有除了少数特殊字符但我不想'//''///'或任何特殊字符像这样重复。我应该改变什么?javascript模式的正则表达式
你需要重新写图案
pattern="(?:[0-9a-zA-Z]*(?:[ ,./&'-][0-9a-zA-Z]+)*)?"
见JS演示:
<form>
<input type="text" name="address" pattern="(?:[0-9a-zA-Z]*(?:[ ,./&'-][0-9a-zA-Z]+)*)?">
<input type="submit">
</form>
注意^
和$
默认添加,但万一您正在使用一些其他框架来覆盖模式属性,你需要将锚明确添加到模式:
^(?:[0-9a-zA-Z]*(?:[ ,./&'-][0-9a-zA-Z]+)*)?$
详细:
^
- 一个可选的非捕获组匹配1 - 字符串(?:[0-9a-zA-Z]*(?:[ ,./&'-][0-9a-zA-Z]*)*)?
开始或0次出现:
[0-9a-zA-Z]*
- 零个或多个ASCI我字母/数字(?:[ ,./&'-][0-9a-zA-Z]*)*
- 0或多次出现的:
[ ,./&'-]
- 一个空间,,
,.
,/
(无需逃吧!),&
,'
或-
(不需要逃避它在字符类的结尾,但你可以)[0-9a-zA-Z]+
- 一个或多个 ASCII字母/数字$
- 字符串结尾。您可以添加一个负先行检查重复:
(?!.*([ ,./&'-])\1)[0-9a-zA-Z ,./&'-]*
这将拒绝与空间,,
,.
,/
,&
,'
,或者-
重复的字符串。