2015-02-24 54 views
0

將輸入模式設置爲所有模式都是真實的,但有一個例外:url不可接受。我的意思是,例如所有的輸入模式是好的,但:HTML輸入模式:除URL之外的所有內容

ftp://example.com 
http://example.com 
https://example.com 

我們無法進入......

是真的,而無需使用JavaScript或做沒有?

+2

您能否重新說明您的問題?我不確定你在問什麼。 – winhowes 2015-02-24 08:08:58

+0

@winhowes接受所有輸入,除了URL的 – brabertaser19 2015-02-24 08:09:23

+0

您是否需要限制所有網址或只有這三個網址? – 2015-02-24 08:11:39

回答

1

使用JavaScript和使用正則表達式這裏找到:What is the best regular expression to check if a string is a valid URL?,你可以做這樣的事情:

function isValid(inputVal){ 
    return !/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/.test(inputVal); 

} 

isValid(document.getElementById("inputID").value); 

編輯

沒有JavaScript,你可以像這樣

<input pattern="^(?!((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?))" > 

^#字符串開頭 (?!#開始負面預測 。*)任何形式的(除行終止)的#零個或多個字符 foobar的#foobar的

+1

「do without javascript」 – brabertaser19 2015-02-24 08:22:02

0
  1. 選擇從互聯網上的URL驗證正則表達式(或寫自己的:))。
  2. 把它放在負面預測(?!)
  3. 加上.*以匹配其他所有東西。
  4. 在輸入的模式屬性中使用新的正則表達式。

例如,如果URL驗證正則表達式是^(((https?)|(ftp)):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$輸入會像

<input type="text" pattern="^(?!(((https?)|(ftp)):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?).*$" /> 

注意:不是每一個正則表達式將工作,如果你在負前瞻添加它,以便只需使用JavaScript和反轉原始正則表達式的結果。此外,您的輸入必須位於表單內才能觸發模板驗證(在表單提交時)。

0

這個問題表明你已經知道正則表達式,只是想知道你是否應該使用JavaScript(或HTML)。答案是:可能不是。

如果您正在過濾輸入 - 說 - 論壇,使用Javascript將是一個壞主意,因爲它在本地運行,所以用戶可以很容易地避免檢查。使用服務器端語言(最可能是PHP)來執行檢查。

相關問題