javascript Reg Exp匹配特定的域名
javascript Reg Exp to match specific domain name
我一直在尝试使Reg Exp与特定域名的URL匹配。
如果我想检查这个url是否来自example.com什么regexp应该是最好的?
这个正则表达式应该匹配以下类型的url:
http://api.example.com/...
http://preview.example.com/...
http://www.example.com/...
http://purhcase.example.com/...
只是简单的规则,像http://{something}.example.com/{something}
那样应该通过。
谢谢。
我想这就是你要找的:(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
使用indexOf
javascript 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');
}
编辑:为什么用indexOf
代替Regular Expression
你看,你在这里匹配的是一个简单的字符串(example.com)而不是pattern
。如果你有一个固定的字符串,那么不需要通过检查模式来引入语义复杂性。
正则表达式最适合用于确定模式是否匹配。
例如,如果您的要求是域名应该以ex
开始,以le
结束,并且在开始和结束之间,它应该包含字母数字字符,其中必须有4个字符是大写的。在这种情况下,正则表达式将被证明是有用的。
你的问题很简单,所以没有必要雇佣1000个天使来说服一个爱你的人。div;)
使用
/^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+'.)?[a-zA-Z]+'.)?
(domain|domain2)'.com$/g
匹配您选择的特定域。
如果您只想匹配一个域,那么从(domain|domain2)
部分中删除|domain2
。
它会帮助你。https://www.regextester.com/94044
不确定这是否适合您的情况,但是依赖内置的URL解析器可能比使用正则表达式更好。
var url = document.createElement('a');
url.href = "http://www.example.com/thing";
然后你可以使用API
给出的方法调用这些值url.protocol // (http:)
url.host // (www.example.com)
url.pathname // (/thing)
如果这对你没有帮助,像这样的东西可以工作,但可能太脆弱:
var url = "http://www.example.com/thing";
var matches = url.match(/:'/'/(.[^'/]+)(.*)/);
// matches would return something like
// ["://example.com/thing", "example.com", "/thing"]
这些帖子也可能有所帮助:
https://stackoverflow.com/a/3213643/4954530 https://stackoverflow.com/a/6168370祝你好运!
在某些情况下,您正在寻找的域名实际上可以在查询部分找到,而不是在域名部分:https://www.google.com/q=www.example.com
这个答案会更好地处理这种情况。
参见regex101中的这个例子。
正如你所指出的,你只需要example.com(写域名然后转义句号然后com),所以在regex中使用它。
例子更新请看下面的答案
- Javascript Reg Exp不正确匹配
- Wordpress:替换源(域名)链接
- Jquery-将字符串转换为reg exp对象
- Cookie只设置为一个域名,但网站有多个域名
- 带有通配符的姓氏Reg表达式
- 仅验证/接受来自特定域名的电子邮件
- 使用网络服务器的IP地址而不是域名对其进行屏幕抓取
- Reg Ex Match Failing
- 下面的Reg表达式出了什么问题
- 使用 的 Reg Ex 测试号码范围
- 如何使用正则表达式验证单字母域名
- 如果通过域名或IP地址导航到,则进行检测
- 根据域名和名称的范围删除重复的JavaScript cookie
- Reg Expression-录制权限组(Javascript)
- Reg Expression javascript
- Reg-ex,用于解析window.location.pathname并返回个/s
- 有没有办法检测电子邮件地址的假域名?使用Perl、php、javascript
- Reg-ex以获取具有特殊字符的字符串中的子字符串
- javascript只返回字符串的一级域名
- javascript Reg Exp匹配特定的域名