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前缀的域名部分是否包含指定域名相关推荐

  1. Nginx 运维之域名验证

    各公众平台在配置接口域名时会验证开发者对域名的配置权, 生成随机的文本及字符串,让放置在域名根目录可以通过域名直接访问到即通过验证. 示例为验证域名 abc.com 可以通过根路由访问 6CysNYj ...

  2. 忽略wx公众号网页授权域名验证

    众所周知,使用微信公众号提供的API时难免会遇到需要配置网页授权域名,比如wx支付.wx扫一扫都需要配置网页授权域名,当然如果你有备案好的域名并且已经映射到你的服务器那样最好,本篇博客相信您也用不上, ...

  3. 一台云服务器绕过企业微信域名验证本地开发

    背景 如今的企业微信应用接入开发,一定要有域名和云服务以及网站备案(国内需要) 但本人通过申请域名后发现还要等3天才能进行网站备案,而且大概了解了一下网站备案审核期间大概半个月~一个月,时间特别久 我 ...

  4. 阿里云如何申请证书绑定域名以及域名验证

    完成SSL证书购买后,需要在阿里云SSL证书控制台补全证书申请的审核资料 1.进入阿里云的控制台--------安全(云盾)-------证书服务-----我的订单:找到你的证书-----选择&quo ...

  5. 申请了SSL数字证书如何进行域名验证?

    为了防止域名被冒用申请SSL证书的域名,要求先验证这个域名的所有权,虽然是系统自动审核,但是还是需要申请者进行配合.按照要求正确的配置域名验证信息,等待CA系统中心审核通过后,才会颁发证书.目前可用的 ...

  6. SSL证书的域名验证操作指引

    SSL证书需要验证申请者对域名的管理权,目前常用的域名验证方式有:域名解析验证(以下称DNS验证):邮箱验证:文件验证(以下称标签验证),只需要满足其中一项的验证要求就可以通过验证: 一:DNS验证: ...

  7. 域名正版验证系统,PHP域名查询验证完整无误源码下载,域名验证系统完整源码

    域名正版验证系统,PHP域名查询验证完整无误源码下载,域名验证, 由于优雅草系列产品盗版横行需要建立开源制度和正版授权查询,曾经寻找过没有可用的原计划自行写一个,不料到突然发现一个宝贝,完整可用并且优 ...

  8. Digicert关于SSL证书域名验证(DCV)策略变更通知

    近日,Digicert针对三个月前CA/B Forum发布的SSL证书域名验证的两大变更做出了以下回应: 从2021年9月27日起,Digicert SSL证书每397天需重新进行域名验证: 从202 ...

  9. js总结(10)js获取当前域名、Url、相对路径和参数以及指定参数

    一.js获取当前域名有2种方法 获取到当前域名的顶级域名 "http://m."+document.domain.split('.').slice(-2).join('.'); 1 ...

最新文章

  1. 2022-2028年中国XPS挤塑板行业市场全景评估及产业前景规划报告
  2. sudo命令_用大写字母输入 Linux 命令,实现以 sudo 用户权限运行
  3. 正则表达式-趣现象一则
  4. scala中的隐式转换、隐式参数和隐式类
  5. php 获取图片字节,php内置函数获取图片类型-exif_imagetype
  6. [pytorch、学习] - 4.5 读取和存储
  7. 推荐系统之 BPR 算法及 Librec的BPR算法实现【1】
  8. (24)HTTP 方法:GET 对比 POST
  9. 微信小程序为电商插上翅膀
  10. 京东、宅急送的微服务实践分享(下)| 架构师小组交流会
  11. Chrome PPAPI 开发环境
  12. java里如何继承一个类_java如何继承类
  13. JavaScript-161:表格全行变色
  14. xxxx cannot be opened for xxxx
  15. 【滤镜算法】低多边形风格介绍及Matlab实现
  16. 英语中 distinct 与 distinctive 的区别
  17. 轨道六根数的含义汇总
  18. 从用户文件到系统驱动,全面清理c盘
  19. 南泰就业联盟Android,统一推送联盟终于发力!国产厂商纷纷加入:将彻底解决安卓卡顿问题...
  20. VC++开发垃圾文件清理软件(下)

热门文章

  1. 微信H5调试Vconsole
  2. Mac搭建GO开发环境
  3. NVDIMM原理与应用之一:基本原理
  4. 安卓应用设置第一个显示的界面
  5. app目前第三方托管平台整理
  6. java 文档比较功能_[原创]java在线比较两个word文件
  7. 判断一个数是不是2的N次方 自己写的土算法
  8. 云上办公便捷、安全,就用华为云桌面
  9. JS原生---歌词滚动效果案例
  10. 学习笔记2-了解unik的设计