我一直在尝试使用Reg Exp来匹配具有特定域名的URL.
所以,如果我想检查这个网址是否来自example.com,那么reg exp应该是最好的?
此reg exp应与以下类型的URL匹配:
http://api.example.com/...
http://preview.example.com/...
http://www.example.com/...
http://purhcase.example.com/...
Run Code Online (Sandbox Code Playgroud)
只是简单的规则,就像http://{something}.example.com/{something}那时应该通过.
谢谢.
Joe*_*ose 11
我想这就是你要找的东西:(https?:\/\/(.+?\.)?example\.com(\/[A-Za-z0-9\-\._~:\/\?#\[\]@!$&'\(\)\*\+,;\=]*)?).
它分解如下:
https?:\/\/匹配http://或https://(你没有提到https,但它似乎是一个好主意).(.+?\.)?在第一个点之前匹配任何东西(我使它成为可选的,以便例如http://example.com/找到它example\.com(example.com当然);(\/[A-Za-z0-9\-\._~:\/\?#\[\]@!$&'\(\)\*\+,;\=]*)?):斜杠后跟URL中的每个可接受字符; 我做了这个可选项,以便找到http://example.com(没有最后的斜杠).示例:https://regex101.com/r/kT8lP2/1
使用indexOfJavaScript API。:)
var url = 'http://api.example.com/api/url';
var testUrl = 'example.com';
if(url.indexOf(testUrl) !== -1) {
console.log('URL passed the test');
} else{
console.log('URL failed the test');
}
Run Code Online (Sandbox Code Playgroud)
编辑:
为什么使用indexOf而不是Regular Expression.
你看,你在这里匹配的是一个简单的字符串 (example.com) 而不是pattern. 如果您有固定字符串,则无需通过检查模式来引入语义复杂性。
正则表达式最适合决定模式是否匹配。
例如,如果您的要求是域名应该以ex结尾le开头和开头和结尾之间,那么它应该包含字母数字字符,其中 4 个字符必须是大写。这是正则表达式证明有益的用例。
你的问题很简单,没必要动用千军万马去说服一个爱你的人。;)