2014-05-02 83 views
0

出於某種原因,我在使用HTML5表單驗證模式屬性時遇到問題。我試圖匹配這個條件/[!?^$\\\/{}]/g。我試過轉義\刪除\與全局屬性,刪除[],幾乎所有東西。所以總是有第一次在stackoverflow上發佈一個問題。HTML 5輸入正則表達式模式不起作用

簡而言之,用戶不應該輸入以下\/${}

<form action="#"> 
    <input type="text" required pattern="/[!?^$\\\/{}]/g"> 
    <button type="submit">Submit</button> 
</form> 

4.20 - 4.21 New export - >應該是有效的

4/20 - 2/21 $New {export} - >應爲無效

這裏的小提琴:http://jsfiddle.net/TV28A/

+2

你正在驗證這個正則表達式對什麼字符串? –

+0

我不認爲你可以使用/.../g格式[SO - 點擊這裏](http://stackoverflow.com/questions/5524842/have-html5s-a-inputs-pattern-attribute-ignore-案例) – JasonWilczak

+0

你的意思是一個例子?如果用戶做了'4/20 - 4/21 $ Date'那應該被拒絕。它應該接受所有字符串字符,除了'\/$ {}'@GregBurghardt –

回答

2

我已經嘗試了以上所有的答案,任何工作(不知道是不是我測試錯)。但以防萬一:

,如果你想阻止只有\/${}人物,我認爲,這應該是正確的正則表達式[^\/\\${}]*

這樣的代碼會是這樣的:

<form action="#"> 
    <input type="text" required pattern="[^\/\\${}]*"> 
    <button type="submit">Submit</button> 
</form> 

^字符作爲第一個放入括號中,否定了句子,所以[^\/\\${}]*表示字符串,其中不是有任何大小的/ \ $ { }

編輯:

共享jsFiddle如在意見中的要求。

+0

非常感謝你!這在這裏工作! –

+0

你可以顯示一個jsFiddle它的工作原理。我無法讓它工作。 – jfriend00

+0

http://jsfiddle.net/e3KL4/1/我的正則表達式是錯誤的。 –

0

您無需將RegEx放入/使用pattern屬性時。此外,g標誌也是不必要的,因爲表達式必須匹配整個輸入字段,而不僅僅是一部分。

這應該能滿足你的目的:

<form action="#"> 
    <input type="text" required pattern="[!?^$\\\/{}]"> 
    <button type="submit">Submit</button> 
</form> 
+0

你們用jsfiddle鏈接試試這個嗎?似乎沒有工作。 cc:@ jfriend00 –

+0

這不會根據需要驗證OP的字符串[FIDDLE](http://jsfiddle.net/jasonwilczak/TV28A/4/) – JasonWilczak

+0

@JasonWilczak我一定要瘋了,但你的小提琴不適合我。 –