javascript Reg Exp以匹配特定的域名

Cod*_*ole 5 javascript regex

我一直在尝试使用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

  • 我正在寻找一个类似的regEx,除了一个场景外,这个工作正常.如果我有像example.coms这样的字符串,它仍然匹配.如何修改正则表达式,使其与example.com之外的任何字符都不匹配.有效示例:example.com/abc/无效示例:example.comaaa example.com.us (4认同)

Adi*_*rab 8

使用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 个字符必须是大写。这是正则表达式证明有益的用例。

你的问题很简单,没必要动用千军万马去说服一个爱你的人。;)