<input type="text" name="address" pattern="[0-9a-zA-Z ,\.\/\-&']{0,}">


它将允许除少数特殊字符外的所有字符,但是我不希望'//''///'或类似的任何特殊字符重复。我应该改变什么?

最佳答案

您需要将模式重写为

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>





请注意,默认情况下添加了^$,但是如果您使用的是覆盖pattern属性的其他框架,则需要将锚点明确添加到pattern中:

^(?:[0-9a-zA-Z]*(?:[ ,./&'-][0-9a-zA-Z]+)*)?$


细节:


^-字符串的开头
(?:[0-9a-zA-Z]*(?:[ ,./&'-][0-9a-zA-Z]*)*)?-一个可选的非捕获组,匹配以下情况的1或0:


[0-9a-zA-Z]*-零个或多个ASCII字母/数字
(?:[ ,./&'-][0-9a-zA-Z]*)*-0次或多次出现:


[ ,./&'-]-空格,,./(无需转义!),&'-(无需在字符末尾转义)课,但可以)
[0-9a-zA-Z]+-一个或多个ASCII字母/数字


$-字符串结尾。

关于javascript - javascript模式的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44394371/

10-10 23:36