我的URL正则表达式允许使用空格但不应该使用空格

时间:2014-06-13 11:04:52

标签: javascript regex

我创建了一个在验证普通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);
}

3 个答案:

答案 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);
}