将输入模式设置为通常是否真实,但有一个例外:url是不可接受的。我的意思是例如所有输入模式都可以,但是:
ftp://example.com
http://example.com
https://example.com
我们无法进入......
不使用javascript或没有吗?
答案 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 。*#零个或多个任何类型的字符(行终止符除外) foobar#foobar )
答案 1 :(得分:0)
(?!)
。.*
以匹配其他所有内容。例如,如果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)来进行检查。