Javascript语言中的正则表达式以及RegExp的使用
2022/2/28 20:22:26
本文主要是介绍Javascript语言中的正则表达式以及RegExp的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正则表达式简介:
正则表达式是一门简单语言的语法规范。通常用于字符串的信息处理,例如查询,提换,提取等。
正则表达式并不是Javascript语言独有的。正则表达式相较于String等具有更快的运算效率。
在Javascript中,regexp和string都可以处理正则表达式。
下面是一个简单的正则表达式:
//匹配数字 ^[0-9]*$
Javascript正则表达式举例:
Javascript语言中提供了regexp和string对字符串进行处理。这里,只讨论前者的使用;
例子1:数字匹配检测:
function isNumber(data) { var reg_str = /^[0-9]*$/; var is_number = reg_str.test(data); console.log(is_number); } //测试代码 function test_reg(){ isNumber(123); //true isNumber("a12");//false }
Javascript中,正则表达式必须写在一行;
用“/” 和“/”进行首尾标记。
例子2:url匹配检测:
function isUrl (url) { var reg_str = /^(https?:\/\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\.)+(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+))(:\d+)?(\/.*)?(\?.*)?(#.*)?$/; return reg_str.test(url); } //测试代码: function test_url(){ url = "https://news.sina.com.cn/w/2022-02-28/doc-imcwipih5695932.shtml"; res1 = isUrl(url); console.log("res1:"); console.log(res1); //true }
先设置匹配规则,放在reg_str中,然后,使用reg_str.test(url)来进行url的check。
使用正则表达式进行url的解析:
再看如何解析:
function parseUrl(url) { var reg_str = /^(https?:\/\/(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+\.)+(([a-zA-Z0-9]+-?)+[a-zA-Z0-9]+))(:\d+)?(\/.*)?(\?.*)?(#.*)?$/; var is_url = reg_str.test(url); if (is_url ==true) { //parse var url_array = reg_str.exec(url); console.log(url_array); } } //测试代码: function test_url(){ url = "https://news.sina.com.cn/w/2022-02-28/doc-imcwipih5695932.shtml"; parseUrl(url); }
运行结果:从网页的console可以看到如下运行结果:
[
"https://news.sina.com.cn/w/2022-02-28/doc-imcwipih5695932.shtml",
"https://news.sina.com.cn",
"com.",
"co",
"cn",
"c",
null,
"/w/2022-02-28/doc-imcwipih5695932.shtml",
null,
null
]
输出结果是一个数组。
使用RegExp进行url的匹配检测:
可以使用new RegExp来创建一个正则表达式的对象,用这个对象提供的方法进行url的匹配。
更复杂全面的一个url正则匹配:
function checkUrl (str_url) { var strRegex = '^((https|http|ftp|rtsp|mms)?://)' + '?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?' //ftp的user@ + '(([0-9]{1,3}.){3}[0-9]{1,3}' // IP形式的URL- 192.192.40.180 + '|' // 允许IP和DOMAIN(域名) + '([0-9a-z_!~*\'()-]+.)*' // 域名- www. + '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z].' // 二级域名 + '[a-z]{2,6})' // first level domain- .com or .museum + '(:[0-9]{1,4})?' // 端口- :80 + '((/?)|' // a slash isn't required if there is no file name + '(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?)$'; var re=new RegExp(strRegex); if (re.test(str_url)) { return (true); } else { return (false); } }
这个例子中,对我们常用的正则规则几乎都包含进去了。包括http,https,ftp等等常用的请求类型;以及ip地址,端口,域名等可能出现在url中的规则。
虽然繁琐,但应用广泛。
这篇关于Javascript语言中的正则表达式以及RegExp的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?