JS安全域名验证,安全域名效验,安全域名检查,正则表达式RegExp检查域名,截取字符串检查域名,检查域名url前缀的域名部分是否包含指定域名
JS安全域名验证,安全域名效验,安全域名检查,正则表达式RegExp检查域名,截取字符串检查域名,检查域名url前缀的域名部分是否包含指定域名
安全域名列表
var DomainArray=['runoob.com','csdn.net'];
需要检查的URL列表
var str1=['http://baidu.com/upload/attachment/20221201/123801546.html?lang%3Dhbfh1pp52','https://blog.csdn.net/cplvfx?type=blog','https://csdn.net/cplvfx?type=blog','https://wwww.csdn.net/cplvfx?type=blog', 'https://www.runoob.com/jsref/jsref-string-includes.html', 'https://www.runoob.com/', 'https://runoob.com/', 'http://baidu.com/upload/attachment/20221201/123801546.html?https://runoob.com/','http://baidu.com/upload/attachment/20221201/123801546.html?https://csdn.net/',
];
正则表达式检查结果
返回值1: false
http://baidu.com/upload/attachment/20221201/123801546.html?lang%3Dhbfh1pp52
返回值2: true
https://blog.csdn.net/cplvfx?type=blog
返回值3: true
https://csdn.net/cplvfx?type=blog
返回值4: true
https://wwww.csdn.net/cplvfx?type=blog
返回值5: true
https://www.runoob.com/jsref/jsref-string-includes.html
返回值6: true
https://www.runoob.com/
返回值7: true
https://runoob.com/
返回值8: false
http://baidu.com/upload/attachment/20221201/123801546.html?https://runoob.com/
返回值9: false
http://baidu.com/upload/attachment/20221201/123801546.html?https://csdn.net/
截取字符串-检查结果
返回值1: false
http://baidu.com/upload/attachment/20221201/123801546.html?lang%3Dhbfh1pp52
返回值2: true
https://blog.csdn.net/cplvfx?type=blog
返回值3: true
https://csdn.net/cplvfx?type=blog
返回值4: true
https://wwww.csdn.net/cplvfx?type=blog
返回值5: true
https://www.runoob.com/jsref/jsref-string-includes.html
返回值6: true
https://www.runoob.com/
返回值7: true
https://runoob.com/
返回值8: false
http://baidu.com/upload/attachment/20221201/123801546.html?https://runoob.com/
返回值9: false
http://baidu.com/upload/attachment/20221201/123801546.html?https://csdn.net/
一、正则表达式-检查域名核心方法
正则-检查域名:url前缀的域名部分是否包含指定域名
/*** 正则-检查域名:url前缀的域名部分是否包含指定域名* */
function CheckDomain(urlStr,IsJump){if(urlStr==undefined){return false;}IsJump=(IsJump==undefined?true:false);var DomainArray=['runoob.com','csdn.net']; //安全域名var status=false;//状态DomainArray.forEach(function(item){var patt=new RegExp("^(http://|https://){1}(\\w*)(\\.)*"+item,"i");//正则表达式var res=patt.exec(urlStr);//执行匹配,并获取到匹配结果if(res!=null){ console.warn(urlStr)console.log('匹配结果:',res[0])status=true;//只要有匹配则说明,安全}});console.log('IsJump=='+IsJump);return status;
}
二、截取字符串-检查域名核心方法
/*** 截取字符串-检查域名:url前缀的域名部分是否包含指定域名
*/
function CheckDomainStr(urlStr,IsJump){var DomainArray=['runoob.com','csdn.net']; //安全域名var sliceStr=urlStr.slice(0,50);//截取50个字符串var status=false;DomainArray.forEach(function(item){ var res=sliceStr.includes(item);//执行匹配,并获取到匹配结果console.error(item)console.warn(urlStr)console.warn(sliceStr)console.log('匹配结果:',res) if(res==true){ status=true;//只要有匹配则说明,安全}});return status;
}
三、完整代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>正则表达式</title>
</head>
<body>
<h1>正则表达式,匹配网址</h1>
<script>var str1=['http://baidu.com/upload/attachment/20221201/123801546.html?lang%3Dhbfh1pp52','https://blog.csdn.net/cplvfx?type=blog','https://csdn.net/cplvfx?type=blog','https://wwww.csdn.net/cplvfx?type=blog', 'https://www.runoob.com/jsref/jsref-string-includes.html', 'https://www.runoob.com/', 'https://runoob.com/', 'http://baidu.com/upload/attachment/20221201/123801546.html?https://runoob.com/','http://baidu.com/upload/attachment/20221201/123801546.html?https://csdn.net/',
]; /*** 正则-检查域名:url前缀的域名部分是否包含指定域名* */
function CheckDomain(urlStr,IsJump){if(urlStr==undefined){return false;}IsJump=(IsJump==undefined?true:false);var DomainArray=['runoob.com','csdn.net']; //安全域名var status=false;//状态DomainArray.forEach(function(item){var patt=new RegExp("^(http://|https://){1}(\\w*)(\\.)*"+item,"i");//正则表达式var res=patt.exec(urlStr);//执行匹配,并获取到匹配结果if(res!=null){ console.warn(urlStr)console.log('匹配结果:',res[0])status=true;//只要有匹配则说明,安全}});console.log('IsJump=='+IsJump);return status;
}str1.forEach(function(item,index){document.write("返回值"+(index+1)+": " + CheckDomain(item,false)+"<br/>"+item+"<br/><hr/>");
});document.write('<h1>截取字符串-检查域名:url前缀的域名部分是否包含指定域名</h1>');
/*** 截取字符串-检查域名:url前缀的域名部分是否包含指定域名
*/
function CheckDomainStr(urlStr,IsJump){var DomainArray=['runoob.com','csdn.net']; //安全域名var sliceStr=urlStr.slice(0,50);//截取50个字符串var status=false;DomainArray.forEach(function(item){ var res=sliceStr.includes(item);//执行匹配,并获取到匹配结果console.error(item)console.warn(urlStr)console.warn(sliceStr)console.log('匹配结果:',res) if(res==true){ status=true;//只要有匹配则说明,安全}});return status;
}
str1.forEach(function(item,index){document.write("返回值"+(index+1)+": " + CheckDomainStr(item,false)+"<br/>"+item+"<br/><hr/>");
});
</script></body>
</html>
四、所用到的知识点
4.1、数组Array 对象
网址:JavaScript Array 对象 | 菜鸟教程
数组属性
属性 | 描述 |
---|---|
constructor | 返回创建数组对象的原型函数。 |
length | 设置或返回数组元素的个数。 |
prototype | 允许你向数组对象添加属性或方法。 |
Array 对象方法
方法 | 描述 |
---|---|
concat() | 连接两个或更多的数组,并返回结果。 |
copyWithin() | 从数组的指定位置拷贝元素到数组的另一个指定位置中。 |
entries() | 返回数组的可迭代对象。 |
every() | 检测数值元素的每个元素是否都符合条件。 |
fill() | 使用一个固定值来填充数组。 |
filter() | 检测数值元素,并返回符合条件所有元素的数组。 |
find() | 返回符合传入测试(函数)条件的数组元素。 |
findIndex() | 返回符合传入测试(函数)条件的数组元素索引。 |
forEach() | 数组每个元素都执行一次回调函数。 |
from() | 通过给定的对象中创建一个数组。 |
includes() | 判断一个数组是否包含一个指定的值。 |
indexOf() | 搜索数组中的元素,并返回它所在的位置。 |
isArray() | 判断对象是否为数组。 |
join() | 把数组的所有元素放入一个字符串。 |
keys() | 返回数组的可迭代对象,包含原始数组的键(key)。 |
lastIndexOf() | 搜索数组中的元素,并返回它最后出现的位置。 |
map() | 通过指定函数处理数组的每个元素,并返回处理后的数组。 |
pop() | 删除数组的最后一个元素并返回删除的元素。 |
push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
reduce() | 将数组元素计算为一个值(从左到右)。 |
reduceRight() | 将数组元素计算为一个值(从右到左)。 |
reverse() | 反转数组的元素顺序。 |
shift() | 删除并返回数组的第一个元素。 |
slice() | 选取数组的一部分,并返回一个新数组。 |
some() | 检测数组元素中是否有元素符合指定条件。 |
sort() | 对数组的元素进行排序。 |
splice() | 从数组中添加或删除元素。 |
toString() | 把数组转换为字符串,并返回结果。 |
unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
valueOf() | 返回数组对象的原始值。 |
4.2、正则表达式RegExp 对象
网址:JavaScript RegExp 对象 | 菜鸟教程
RegExp 对象
正则表达式是描述字符模式的对象。
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
语法
var patt=new RegExp(pattern,modifiers);
或者更简单的方式:
var patt=/pattern/modifiers;
- pattern(模式) 描述了表达式的模式
- modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:
var re = new RegExp("\\w+"); var re = /\w+/;
修饰符
修饰符用于执行区分大小写和全局匹配:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
方括号
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
(red|blue|green) | 查找任何指定的选项。 |
元字符
元字符(Metacharacter)是拥有特殊含义的字符:
元字符 | 描述 |
---|---|
. | 查找单个字符,除了换行和行结束符。 |
\w | 查找数字、字母及下划线。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |
\0 | 查找 NULL 字符。 |
\n | 查找换行符。 |
\f | 查找换页符。 |
\r | 查找回车符。 |
\t | 查找制表符。 |
\v | 查找垂直制表符。 |
\xxx | 查找以八进制数 xxx 规定的字符。 |
\xdd | 查找以十六进制数 dd 规定的字符。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词
量词 | 描述 |
---|---|
n+ |
匹配任何包含至少一个 n 的字符串。 例如,/a+/ 匹配 "candy" 中的 "a","caaaaaaandy" 中所有的 "a"。 |
n* |
匹配任何包含零个或多个 n 的字符串。 例如,/bo*/ 匹配 "A ghost booooed" 中的 "boooo","A bird warbled" 中的 "b",但是不匹配 "A goat grunted"。 |
n? |
匹配任何包含零个或一个 n 的字符串。 例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。 |
n{X} |
匹配包含 X 个 n 的序列的字符串。 例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的两个 "a",且匹配 "caaandy." 中的前两个 "a"。 |
n{X,} |
X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。 例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。 |
n{X,Y} |
X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。 例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 |
RegExp 对象方法
方法 | 描述 |
---|---|
compile | 在 1.5 版本中已废弃。 编译正则表达式。 |
exec | 检索字符串中指定的值。返回找到的值,并确定其位置。 |
test | 检索字符串中指定的值。返回 true 或 false。 |
toString | 返回正则表达式的字符串。 |
支持正则表达式的 String 对象的方法
方法 | 描述 | FF | IE |
---|---|---|---|
search | 检索与正则表达式相匹配的值。 | 1 | 4 |
match | 找到一个或多个正则表达式的匹配。 | 1 | 4 |
replace | 替换与正则表达式匹配的子串。 | 1 | 4 |
split | 把字符串分割为字符串数组。 | 1 | 4 |
RegExp 对象属性
属性 | 描述 |
---|---|
constructor | 返回一个函数,该函数是一个创建 RegExp 对象的原型。 |
global | 判断是否设置了 "g" 修饰符 |
ignoreCase | 判断是否设置了 "i" 修饰符 |
lastIndex | 用于规定下次匹配的起始位置 |
multiline | 判断是否设置了 "m" 修饰符 |
source | 返回正则表达式的匹配模式 |
4.3、字符串String 对象
网址:JavaScript String 对象 | 菜鸟教程
String 对象用于处理文本(字符串)。
String 对象创建方法: new String()。
语法
var txt = new String("string");
或者更简单方式:
var txt = "string";
String 对象属性
属性 | 描述 |
---|---|
constructor | 对创建该对象的函数的引用 |
length | 字符串的长度 |
prototype | 允许您向对象添加属性和方法 |
String 对象方法
方法 | 描述 |
---|---|
charAt() | 返回在指定位置的字符。 |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
concat() | 连接两个或更多字符串,并返回新的字符串。 |
endsWith() | 判断当前字符串是否是以指定的子字符串结尾的(区分大小写)。 |
fromCharCode() | 将 Unicode 编码转为字符。 |
indexOf() | 返回某个指定的字符串值在字符串中首次出现的位置。 |
includes() | 查找字符串中是否包含指定的子字符串。 |
lastIndexOf() | 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。 |
match() | 查找找到一个或多个正则表达式的匹配。 |
repeat() | 复制字符串指定次数,并将它们连接在一起返回。 |
replace() | 在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。 |
replaceAll() | 在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串。 |
search() | 查找与正则表达式相匹配的值。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
split() | 把字符串分割为字符串数组。 |
startsWith() | 查看字符串是否以指定的子字符串开头。 |
substr() | 从起始索引号提取字符串中指定数目的字符。 |
substring() | 提取字符串中两个指定的索引号之间的字符。 |
toLowerCase() | 把字符串转换为小写。 |
toUpperCase() | 把字符串转换为大写。 |
trim() | 去除字符串两边的空白。 |
toLocaleLowerCase() | 根据本地主机的语言环境把字符串转换为小写。 |
toLocaleUpperCase() | 根据本地主机的语言环境把字符串转换为大写。 |
valueOf() | 返回某个字符串对象的原始值。 |
toString() | 返回一个字符串。 |
String HTML 包装方法
HTML 返回包含在相对应的 HTML 标签中的内容。
以下方法并非标准方法,所以可能在某些浏览器下不支持。
方法 | 描述 |
---|---|
anchor() | 创建 HTML 锚。 |
big() | 用大号字体显示字符串。 |
blink() | 显示闪动字符串。 |
bold() | 使用粗体显示字符串。 |
fixed() | 以打字机文本显示字符串。 |
fontcolor() | 使用指定的颜色来显示字符串。 |
fontsize() | 使用指定的尺寸来显示字符串。 |
italics() | 使用斜体显示字符串。 |
link() | 将字符串显示为链接。 |
small() | 使用小字号来显示字符串。 |
strike() | 用于显示加删除线的字符串。 |
sub() | 把字符串显示为下标。 |
sup() | 把字符串显示为上标。 |
JS安全域名验证,安全域名效验,安全域名检查,正则表达式RegExp检查域名,截取字符串检查域名,检查域名url前缀的域名部分是否包含指定域名相关推荐
- Nginx 运维之域名验证
各公众平台在配置接口域名时会验证开发者对域名的配置权, 生成随机的文本及字符串,让放置在域名根目录可以通过域名直接访问到即通过验证. 示例为验证域名 abc.com 可以通过根路由访问 6CysNYj ...
- 忽略wx公众号网页授权域名验证
众所周知,使用微信公众号提供的API时难免会遇到需要配置网页授权域名,比如wx支付.wx扫一扫都需要配置网页授权域名,当然如果你有备案好的域名并且已经映射到你的服务器那样最好,本篇博客相信您也用不上, ...
- 一台云服务器绕过企业微信域名验证本地开发
背景 如今的企业微信应用接入开发,一定要有域名和云服务以及网站备案(国内需要) 但本人通过申请域名后发现还要等3天才能进行网站备案,而且大概了解了一下网站备案审核期间大概半个月~一个月,时间特别久 我 ...
- 阿里云如何申请证书绑定域名以及域名验证
完成SSL证书购买后,需要在阿里云SSL证书控制台补全证书申请的审核资料 1.进入阿里云的控制台--------安全(云盾)-------证书服务-----我的订单:找到你的证书-----选择&quo ...
- 申请了SSL数字证书如何进行域名验证?
为了防止域名被冒用申请SSL证书的域名,要求先验证这个域名的所有权,虽然是系统自动审核,但是还是需要申请者进行配合.按照要求正确的配置域名验证信息,等待CA系统中心审核通过后,才会颁发证书.目前可用的 ...
- SSL证书的域名验证操作指引
SSL证书需要验证申请者对域名的管理权,目前常用的域名验证方式有:域名解析验证(以下称DNS验证):邮箱验证:文件验证(以下称标签验证),只需要满足其中一项的验证要求就可以通过验证: 一:DNS验证: ...
- 域名正版验证系统,PHP域名查询验证完整无误源码下载,域名验证系统完整源码
域名正版验证系统,PHP域名查询验证完整无误源码下载,域名验证, 由于优雅草系列产品盗版横行需要建立开源制度和正版授权查询,曾经寻找过没有可用的原计划自行写一个,不料到突然发现一个宝贝,完整可用并且优 ...
- Digicert关于SSL证书域名验证(DCV)策略变更通知
近日,Digicert针对三个月前CA/B Forum发布的SSL证书域名验证的两大变更做出了以下回应: 从2021年9月27日起,Digicert SSL证书每397天需重新进行域名验证: 从202 ...
- js总结(10)js获取当前域名、Url、相对路径和参数以及指定参数
一.js获取当前域名有2种方法 获取到当前域名的顶级域名 "http://m."+document.domain.split('.').slice(-2).join('.'); 1 ...
最新文章
- 2022-2028年中国XPS挤塑板行业市场全景评估及产业前景规划报告
- sudo命令_用大写字母输入 Linux 命令,实现以 sudo 用户权限运行
- 正则表达式-趣现象一则
- scala中的隐式转换、隐式参数和隐式类
- php 获取图片字节,php内置函数获取图片类型-exif_imagetype
- [pytorch、学习] - 4.5 读取和存储
- 推荐系统之 BPR 算法及 Librec的BPR算法实现【1】
- (24)HTTP 方法:GET 对比 POST
- 微信小程序为电商插上翅膀
- 京东、宅急送的微服务实践分享(下)| 架构师小组交流会
- Chrome PPAPI 开发环境
- java里如何继承一个类_java如何继承类
- JavaScript-161:表格全行变色
- xxxx cannot be opened for xxxx
- 【滤镜算法】低多边形风格介绍及Matlab实现
- 英语中 distinct 与 distinctive 的区别
- 轨道六根数的含义汇总
- 从用户文件到系统驱动,全面清理c盘
- 南泰就业联盟Android,统一推送联盟终于发力!国产厂商纷纷加入:将彻底解决安卓卡顿问题...
- VC++开发垃圾文件清理软件(下)