HTML输入模式:除URL之外的所有模式

时间:2015-02-24 08:06:08

标签: html css

将输入模式设置为通常是否真实,但有一个例外:url是不可接受的。我的意思是例如所有输入模式都可以,但是:

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

我们无法进入......

不使用javascript或没有吗?

3 个答案:

答案 0 :(得分: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]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/.test(inputVal);

}

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

修改

如果没有JavaScript,你可以这样做

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

^#字符串的开头 (?!#start negative-ahead-ahead   。*#零个或多个任何类型的字符(行终止符除外)   foob​​ar#foobar )

答案 1 :(得分:0)

  1. 从互联网上选择URL验证正则表达式(或编写自己的:))。
  2. 将其置于负面预测(?!)
  3. 添加.*以匹配其他所有内容。
  4. 在输入的模式属性中使用新的正则表达式。
  5. 例如,如果URL验证正则表达式为^(((https?)|(ftp)):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$,则输入将类似于

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

    注意:如果您将其添加到负前瞻中,并非每个正则表达式都能正常工作,那么只需使用JavaScript并反转原始正则表达式的结果即可。此外,您的输入必须位于表单内以触发patern验证(在表单提交时)。

答案 2 :(得分:0)

问题表明你已经知道了正则表达式,只是想知道你是否应该使用Javascript(或HTML)。答案是:可能不是。

如果您正在过滤一个论坛的输入,那么使用Javascript会是一个坏主意,因为它在本地运行,因此用户可以轻松避免检查。使用服务器端语言(大多数可能是PHP)来进行检查。