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

My URL Regex is allowing spaces but shouldn't

本文关键字:不应该 空格 正则表达式 URL 许空格 我的      更新时间:2023-09-26

我创建了一个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);
}

转义点:

return /^(https?:'/'/[a-zA-Z0-9_+%-]+('.[a-zA-Z0-9+'_%-]+)*(:[0-9]{1,5})?('/[a-zA-Z0-9+()?#~=&'._%-]*)*)?$/.test(this);
//                             here __^
不转义的

可以匹配除换行符以外的任何字符,所以当然是空格

> return /^(https?:'/'/[a-zA-Z0-9_+%-]+(.[a-z

我猜这是因为你使用。(这意味着任何东西,包括空间它可能需要转义,应该是

 return /^(https?:'/'/[a-zA-Z0-9_+%-]+('.[a-z

应该转义点。.在正则表达式中表示"匹配除换行符以外的任何字符"。如果你想要一个文字点,像这样转义'.

'is-url': function() {
    return /^(https?:'/'/[a-zA-Z0-9_+%-]+('.[a-zA-Z0-9+'_%-]+)*(:[0-9]{1,5})?('/[a-zA-Z0-9+()?#~=&'._%-]*)*)?$/.test(this);
}