我创建了一个在验证普通Http URL时似乎非常稳定的正则表达式,但是,它似乎允许在协议之外的任何地方输入空格。
因此,http://dango me/mypage
被允许。
'is-url': function() {
return /^(https?:\/\/[a-zA-Z0-9_+%-]+(.[a-zA-Z0-9+\_%-]+)*(:[0-9]{1,5})?(\/[a-zA-Z0-9+()?#~=&\._%-]*)*)?$/.test(this);
}
答案 0 :(得分:4)
逃离点:
return /^(https?:\/\/[a-zA-Z0-9_+%-]+(\.[a-zA-Z0-9+\_%-]+)*(:[0-9]{1,5})?(\/[a-zA-Z0-9+()?#~=&\._%-]*)*)?$/.test(this);
// here __^
没有转义它匹配任何字符,但新行,所以,当然,空格。
答案 1 :(得分:0)
> return /^(https?:\/\/[a-zA-Z0-9_+%-]+(.[a-z
我想是因为你使用了。 (意思是任何包括空间的东西 它可能不得不逃避它,应该
return /^(https?:\/\/[a-zA-Z0-9_+%-]+(\.[a-z
答案 2 :(得分:0)
你应该逃避点。 .
表示在正则表达式中“匹配除换行符之外的任何字符”。如果你想要一个文字点,请像\.
一样转义它。
'is-url': function() {
return /^(https?:\/\/[a-zA-Z0-9_+%-]+(\.[a-zA-Z0-9+\_%-]+)*(:[0-9]{1,5})?(\/[a-zA-Z0-9+()?#~=&\._%-]*)*)?$/.test(this);
}