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 ,./&'-]*
這將拒絕與空間,,
,.
,/
,&
,'
,或者-
重複的字符串。